动态添加gui组件?

时间:2012-10-02 15:48:51

标签: java swing user-interface layout jpanel

我正在开发一个程序,我想创建一个应用程序,我可以使用for循环重复gui组件。我已经使用卡布局完成了它并且它工作正常但是当我使用容器和没有卡布局的JPanel时,gui组件在先前的组件上重叠。请给我一个提示或建议我的代码错误。感谢您的建议和提前时间。

以下是我的应用的代码:

class form extends JFrame implements ActionListener {

    JTextArea text;
     static int openFrameCount = 0;
    public form(){
           super("Insert Form");
        Container panel=getContentPane();
        JPanel  cc    = new JPanel();
        cc.setLayout(null);
        for(int i=1;i<=2;i++){
        JLabel label1=new JLabel(" Question"+(++openFrameCount));

         label1.setBounds(15, 40, 185, 50);
        cc.add(label1);
        text=new JTextArea();
                text.setLineWrap(true);
        text.setWrapStyleWord(true);
        text.setPreferredSize(new Dimension(750,50));
        text.setBounds(80, 60,750,50);
        cc.add(text);
         JLabel symbol=new JLabel("Selection for Option?");
         symbol.setBounds(100, 120,850,60);
 cc.add(symbol);
   ButtonGroup group = new ButtonGroup();
  JRadioButton rbut=new JRadioButton("Radio Button for option");

        rbut.setBounds(300, 120,300,60);
         JCheckBox cbox=new JCheckBox("Check Box for option");
         cc.add(rbut);
         cbox.setBounds(650, 120,350,60);
         cc.add(cbox);
        group.add(rbut);
         group.add(cbox);

          cc.revalidate();
 validate();


         panel.add(cc);
        }
    }

1 个答案:

答案 0 :(得分:2)

您已将cc面板的布局设置为null,这不是一个好主意。然后,使用setBounds(x, y, width, height)设置您添加的组件的位置和大小,它们当然会重叠。

尝试使用任何符合您需求的布局管理器,但不要将其设置为null,除非您真的有充分理由这样做。