【问题标题】:Add (multiple) forms to ScrollPane after clicking button in java在java中单击按钮后将(多个)表单添加到ScrollPane
【发布时间】:2014-05-20 23:57:48
【问题描述】:

所以我有一个程序,一开始只在框架底部包含一个“添加电影”按钮。 在它上面我插入了一个滚动窗格。 我还制作了一个单独的 JPanel 表单,其中包含标签和文本字段,您必须在其中输入电影的数据。 每次单击“添加”按钮时,我都希望在滚动窗格内出现一个表单(在之前制作的表单旁边)。

所以我想我只需要这样做:

private void AddMovieButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                    
        MovieForm movie = new MovieForm();
        MovieScrollPane.add(movie);
}                                                   

但没有出现任何新内容。

我尝试了 validate() 和 repaint(),但到目前为止这些似乎都不起作用。 顺便说一句,我在 Eclipse 中制作了界面。

谁能帮帮我? 还是谢谢!

【问题讨论】:

标签: java swing jpanel add scrollpane


【解决方案1】:

MovieScrollPane.add(movie);

不要将组件直接添加到滚动窗格。通常在滚动窗格的viewport 中添加一个JPanel。

然后,每当您将组件添加到可见 GUI 时,基本代码是:

panel.add(...);
panel.revalidate();
panel.repaint();

这确保布局管理器被调用到可以重新计算首选大小。

此外,请遵循 Java 命名约定。变量名不应以大写字符开头。

【讨论】:

  • @Dragorian,是的,它确实有效。确保您为面板使用布局管理器。发布您的SSCCE 来证明问题。那就是创建一个带有按钮和滚动窗格的简单框架。每次单击按钮时,都会在面板中添加一个 JLabel 或一些简单的东西。这是为了概念验证。一旦你得到这个工作,然后你比较代码,看看你的真实代码有什么不同。
  • 感谢 camickr。我会试试的
  • 好的,现在可以了!原来我需要使用 getViewport().add(...)。我以为我已经尝试过了,但显然我做错了什么。唯一的问题是面板填满了整个滚动窗格,而它应该有空间在旁边显示其他表单。我在表单上尝试了 setPreferedSize(),但我只能使表单更大(并使用滚动条)。将其设置得更小不起作用
  • @Dragorian,那么如果由于我的建议使用viewport 而有效,那么应该接受答案,以便人们知道问题已经解决。 I tried setPreferedSize() on the form, - 不要使用 setPreferredSize()。我已经说过这是布局经理的职责。 ` 它应该有空间在它旁边显示其他表单` - 使用适当的布局管理器。
  • 好的,那么我将不得不对布局管理器进行一些研究。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 2020-12-16
  • 2012-03-30
  • 1970-01-01
  • 2015-05-30
相关资源
最近更新 更多