java - GridLayout 列数错误

标签 java swing jpanel grid-layout

我正在尝试使用 GridLayout(7,2) 创建面板

membersPanel = new JPanel(new GridLayout(7,2));

但是,当我添加组件(标签、组合框、文本字段等)时,组件显示在 3 列中,如下所示:

Image

我尝试将列数更改为 1 甚至 0,但面板保持不变。 我能做什么?

编辑:

下面是更多代码:

 p1 = new JPanel();
membersPanel = new JPanel(new GridLayout(7,0));

resourcesLabel = new JLabel("Resources");
    membersPanel.add(resourcesLabel);       

    emptyLabel5 = new JLabel("");
    membersPanel.add(emptyLabel5);

    emptyLabel6 = new JLabel("");
    membersPanel.add(emptyLabel6);

    comboBoxResource = new JComboBox(configs.XMLreaderDOM4J.readResourceID());
    membersPanel.add(comboBoxResource);

    slider1 = new SliderWithTextField(1,10);
    textSli1 = new TextFieldFromSlider(this, slider1); 
    slider1.setTextField(textSli1);

    slider1.setValue(1);
    membersPanel.add(slider1);

    membersPanel.add(textSli1);

    emptyLabel2 = new JLabel();
    membersPanel.add(emptyLabel2);

    addButton1 = new JButton("Add");
    addButton1.addActionListener(new TrataEvento());
    membersPanel.add(addButton1);



    agregator1Label = new JLabel("Agretagor1");
    membersPanel.add(agregator1Label); 

    comboBoxAgregator1 = new JComboBox(configs.XMLreaderDOM4J.readAgregator1ID());
    membersPanel.add(comboBoxAgregator1);

    slider2 = new SliderWithTextField(1,10);
    textSli2 = new TextFieldFromSlider(this, slider2); 
    slider2.setTextField(textSli2);

    slider2.setValue(1);
    membersPanel.add(slider2);

    membersPanel.add(textSli2);
    addButton2 = new JButton("Add");
    addButton2.addActionListener(new TrataEvento());
    membersPanel.add(addButton2);

    emptyLabel3 = new JLabel();
    membersPanel.add(emptyLabel3);


    agregator0Label = new JLabel("Agregator0");
    membersPanel.add(agregator0Label);     

    comboBoxAgregator0 = new JComboBox(configs.XMLreaderDOM4J.readAgregator0ID());
    membersPanel.add(comboBoxAgregator0);

    slider3 = new SliderWithTextField(1,10);
    textSli3 = new TextFieldFromSlider(this, slider3); 
    slider3.setTextField(textSli3);

    slider3.setValue(1);
    membersPanel.add(slider3);

    membersPanel.add(textSli3);

    addButton3 = new JButton("Add");
    addButton3.addActionListener(new TrataEvento());
    membersPanel.add(addButton3);

    emptyLabel4 = new JLabel();
    membersPanel.add(emptyLabel4);

p1.add(membersPanel); 

最佳答案

如果添加的组件数量超过指定的原始数量,Swing 会调整用于 GridLayout 的列数。使用 0 指定可调整的行数:

membersPanel = new JPanel(new GridLayout(0, 2));

这将使任何 future 的重构变得更加容易。

关于java - GridLayout 列数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17220515/

相关文章:

java - JLabel 上的鱼眼效果

未调用 Java JPanel paintComponent(Graphics g)

java - Spring @ExceptionHandler 行为

java - 即使对于无状态类,静态方法在java中总是不被鼓励吗?

Javax Swing JTable::getModel 与 JTable::getColumnModel

java - 图像不会在屏幕上绘制,但不会发生错误

java - JScrollPane 没有将值更改为 ListEvents

java - ImageIcon 的 2D 数组在 JPanel 中显示不一致且仅部分显示

java - spring内部如何评估SPEL?

java - 什么时候应该使用 CompletionService 而不是 ExecutorService?