在java中单击按钮后向滚动窗格添加(多个)表单

在java中单击按钮后向滚动窗格添加(多个)表单,java,swing,jpanel,add,scrollpane,Java,Swing,Jpanel,Add,Scrollpane,所以我有一个程序,在开始时只在画面底部包含一个“添加电影”按钮。 我在上面插入了一个滚动窗格。 我还制作了一个单独的JPanel表单,其中包含标签和文本字段,您必须在其中输入电影的数据。 每次单击“添加”按钮时,我都希望在滚动窗格中显示一个表单(在以前制作的表单旁边) 所以我想我只需要这样做: private void AddMovieButtonActionPerformed(java.awt.event.ActionEvent evt) {

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

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

private void AddMovieButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                    
        MovieForm movie = new MovieForm();
        MovieScrollPane.add(movie);
}                                                   
但是没有什么新的东西出现

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

有人能帮我吗? 无论如何谢谢你

moviescollpane.add(电影)

不要直接将组件添加到滚动窗格。通常,JPanel会添加到滚动窗格的
视口中

然后,无论何时将组件添加到可见GUI,基本代码如下:

panel.add(...);
panel.revalidate();
panel.repaint();
这样可以确保调用布局管理器以重新计算首选大小


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

@Dragorian,是的,它确实有效。确保您正在为面板使用布局管理器。张贴你的文章,说明问题所在。即创建一个带有按钮和滚动窗格的简单框架。每次单击按钮时,都会向面板添加一个JLabel或一些简单的内容。这是一个概念证明。一旦你完成了这项工作,你就可以比较代码,看看与你的真实代码有什么不同。谢谢camickr。我试试看好了,现在可以了!原来我需要使用getViewport().add(…)。我以为我已经试过了,但显然我做错了什么。唯一的问题是该面板填满了整个滚动窗格,而它应该有空间在旁边显示其他表单。我在表单上尝试了setPreferedSize(),但我只能使表单变大(并使用滚动条)。将其设置为较小的值并不适用work@Dragorian,然后,如果由于我建议使用
视口
,因此它起作用,则应接受答案,以便人们知道问题已经解决<代码>我在表单上尝试了setPreferredSize()
-不要使用setPreferredSize()。我已经说过这是布局经理的责任它应该有空间在旁边显示其他表单`-使用合适的布局管理器。好的,然后我必须对布局管理器做一些研究。谢谢你的帮助!1) 为了更快地获得更好的帮助,请发布一个(最简单的完整且可验证的示例)。2) 另见此。