Java 如何将新元素添加到JFrame并使其显示

Java 如何将新元素添加到JFrame并使其显示,java,swing,user-interface,jframe,auto-update,Java,Swing,User Interface,Jframe,Auto Update,我有一个带有滚动窗格的GUI。滚动窗格在一组JPanel之间滚动。我希望能够在面板列表中再添加一个面板,并通过JFrame更新来完成 现在我有数组更新,但没有JFrame 封装SSCCE; 导入java.awt.BorderLayout; 导入java.awt.Dimension; 导入java.awt.FlowLayout; 导入java.awt.GridLayout; 导入java.awt.Toolkit; 导入java.awt.event.ActionEvent; 导入java.awt.

我有一个带有滚动窗格的GUI。滚动窗格在一组JPanel之间滚动。我希望能够在面板列表中再添加一个面板,并通过JFrame更新来完成

现在我有数组更新,但没有JFrame


封装SSCCE;
导入java.awt.BorderLayout;
导入java.awt.Dimension;
导入java.awt.FlowLayout;
导入java.awt.GridLayout;
导入java.awt.Toolkit;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.io.IOException;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
导入javax.swing.JTextField;
公共类添加扩展JFrame{
私人JPanel[]分行;
私有JPanel窗格;//存储帐户的窗格
私有JScrollPane滚动条;
杰布顿纽伯兰私人酒店;
公共静态void main(字符串[]args){
JFrame=newadd();
}
公共添加(){
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这个。设置大小(500500);
这个.setTitle(“如何添加?”);
此.setLayout(新的BorderLayout());
添加(statusBar(),BorderLayout.NORTH);
大众牧场();
pane=newjpanel();
窗格.setLayout(新的GridLayout(branchs.length,1));
对于(int i=0;i
如果允许GridLayout增长,只需向其添加更多组件即可:

// 0 means new rows are added as needed
pane.setLayout(new GridLayout(0, 1));

// ...

private void newBranch(){
    // Create the component
    JPanel branch = new JPanel();
    branch.add(new JTextField(20));
    // + any additional subcomponents

    // and just add it where the others already are
    pane.add(branch);
    pane.revalidate();
}

JButton newBranch
无法通过将
ActionListener
添加到
JButton newBranch
来访问
buttonventhandler
,或者我是否错误地删除了
扩展了JFrame{
,创建
JFrame
作为局部变量(如
JButton newBranch
)这个。添加(滚动条,BorderLayout.CENTER);&this.repaint();&this.validate();可以是myFrame.xxx this.setLayout(新的BorderLayout());JFrame在API中有BorderLayout,那么这段代码是无用的,但是BorderLayout不适合在运行时添加组件的LayoutManager,因为只有一个JCOmponent可以放置到其中一个areas@mKorbel是的,我注意到了。我更新了代码以包含这一点,这不是问题所在。@mKorbel如果不是BorderLayout,您建议做什么?完美。T这顶帽子正是我想要的,谢谢!
// 0 means new rows are added as needed
pane.setLayout(new GridLayout(0, 1));

// ...

private void newBranch(){
    // Create the component
    JPanel branch = new JPanel();
    branch.add(new JTextField(20));
    // + any additional subcomponents

    // and just add it where the others already are
    pane.add(branch);
    pane.revalidate();
}