Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中向JFrame对象动态添加JPanel对象?_Java_Swing_Dynamic_Jpanel - Fatal编程技术网

如何在Java中向JFrame对象动态添加JPanel对象?

如何在Java中向JFrame对象动态添加JPanel对象?,java,swing,dynamic,jpanel,Java,Swing,Dynamic,Jpanel,我正在构建一个GUI应用程序,当单击JButton生成事件时,它应该将面板动态添加到单个框架中。如果我们按下按钮n次,添加面板不应有任何限制,它应该添加相同的面板n次。试图通过在butoon的事件方法内调用构造函数再次运行相同的代码,但面板仅添加一次。请帮助我,我做了很多关于这方面的搜索,但无法拿出一个适当的解决方案 在下面的代码中,我想在panel1中的按钮被动态按下n次时添加面板 提前谢谢 * public class SuperTimer extends JFrame {

我正在构建一个GUI应用程序,当单击JButton生成事件时,它应该将面板动态添加到单个框架中。如果我们按下按钮n次,添加面板不应有任何限制,它应该添加相同的面板n次。试图通过在butoon的事件方法内调用构造函数再次运行相同的代码,但面板仅添加一次。请帮助我,我做了很多关于这方面的搜索,但无法拿出一个适当的解决方案

在下面的代码中,我想在panel1中的按钮被动态按下n次时添加面板

提前谢谢

*

public class SuperTimer extends JFrame
    {
   JButton addTimer;
   JPanel panel;
    public SuperTimer()
        {
    panel = new JPanel(new GridBagLayout());
            JPanel panel1 = new JPanel(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
            c.weightx=0.5;
            c.weighty=0.5;
            c.gridx=1;
            c.gridy =1;
            c.insets= new Insets(10, 10, 10, 10);
            addTimer = new JButton("Add Timer");
            panel1.add(addTimer,c);
            AddTimer at = new AddTimer();
            addTimer.addActionListener(at);
    getContentPane().add(panel1,BorderLayout.NORTH);
    getContentPane().add(panel,BorderLayout.CENTER);
    }
    public class AddTimer implements ActionListener
        {
            public void actionPerformed(ActionEvent h)
            {

                SuperTimer kt = new SuperTimer();
                panel.setVisible(true);
            }
        }
    }
*
*


与其调用构造函数或设置可见性,不如在buttons action listener内部创建一个面板?计时器永远不会启动,因此不会调用ActionListener。Swing组件在默认情况下是可见的,因此调用setVisibletrue将无效。JFrame的默认布局管理器是BorderLayout,这意味着一个组件可以在任何时候主动占据给定的位置…创建一个新的SuperTimer实例不会做任何事情,因为它从来没有被创建过visible@Smutje我试图将属于面板的全部代码放入addTimer按钮的apction listner中,但根本没有创建面板。请帮帮我,我完全不明白从两个面板开始。添加一个按钮。将ActionListener附加到按钮,当触发时,将一个新面板添加到第一个面板(不带按钮的面板)。将前两个按钮添加到窗口。疯狂单击…改用JList。
public class Trigger {

    public static void main(String[] args) {
        SuperTimer st = new SuperTimer();
        st.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        st.setSize(500,500);

        st.setVisible(true);


    }

}