Java 网格布局调整面板

Java 网格布局调整面板,java,swing,user-interface,layout-manager,gridbaglayout,Java,Swing,User Interface,Layout Manager,Gridbaglayout,我已经阅读了几篇关于这个主题的文章以及文档,但我似乎仍然无法解决我的问题 我已经创建了一个需要调整大小的GUI;但是,我希望保持每行有3个JTextFields 我尝试过调整权重X,但没有成功 以下是我的代码片段: JPanel panelMain = new JPanel(); getContentPane().add(panelMain); JPanel panelForm = new JPanel(new GridBagLayout()); panelMa

我已经阅读了几篇关于这个主题的文章以及文档,但我似乎仍然无法解决我的问题

我已经创建了一个需要调整大小的GUI;但是,我希望保持每行有3个JTextFields

我尝试过调整权重X,但没有成功

以下是我的代码片段:

    JPanel panelMain = new JPanel();
    getContentPane().add(panelMain);

    JPanel panelForm = new JPanel(new GridBagLayout());
    panelMain.add(panelForm);

    //JScrollPane scrollpane = new JScrollPane(panelForm);
    //panelMain.add(scrollpane);



    GridBagConstraints c = new GridBagConstraints();

    c.gridx = 0;
    c.gridy = 0;

    // Row 1
    buttonAddCourses = new JButton("Add Credit Hours");
    buttonAddCourses.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {

            c.gridx = 0;
            c.weightx = 0.2;
            for(int i = 0; i < 15; i++) {
                JTextField newTextField = new JTextField(20);
                listTextFields.add(newTextField);
                panelMain.add(newTextField,c);
                c.gridy++;

            }

            panelMain.validate();
            panelMain.repaint();
        }

    });
    panelForm.add(buttonAddCourses, c);
    c.gridx++;
JPanel panelMain=newjpanel();
getContentPane().add(panelMain);
JPanel panelForm=newjpanel(newgridbagloayout());
panelMain.add(panelForm);
//JScrollPane scrollpane=新的JScrollPane(panelForm);
//panelMain.add(滚动窗格);
GridBagConstraints c=新的GridBagConstraints();
c、 gridx=0;
c、 gridy=0;
//第1行
buttonAddCourses=新按钮(“添加学分”);
buttonAddCourses.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
c、 gridx=0;
c、 权重x=0.2;
对于(int i=0;i<15;i++){
JTextField newTextField=新的JTextField(20);
添加(newTextField);
panelMain.add(newTextField,c);
c、 gridy++;
}
panelMain.validate();
panelMain.repaint();
}
});
添加(按钮D课程,c);
c、 gridx++;
调整大小之前:

调整大小后:
!

JPanel panelMain=new JPanel();//请创建并发布一个有效的
我已经创建了一个需要调整大小的GUI;但是,我希望保持每行有3个JTextFields。
-GridBagLayout不会根据可用空间将组件“包装”到新行。调整大小永远不会改变一行中组件的数量。它只会调整组件的大小。你的要求真的不是很清楚。
JPanel panelMain = new JPanel(); // <- gets a FlowLayout by default
// ..
JPanel panelForm = new JPanel(new GridBagLayout()); // panel with GBL
// ...
    panelMain.add(newTextField,c); // No, this should be panelForm.add(..);