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