我必须在java中创建一个2-D复选框数组,并使用网格布局将它们排列在2列中。任何人都可以帮我解决这个问题吗?

时间:2016-10-25 18:29:10

标签: java swing checkbox grid-layout jcheckbox

我创建了一个JPanel,并在面板中添加了复选框。

import java.awt.*;
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

这是我到目前为止的工作,这是一个一维数组,它在左侧显示了一列复选框。 如何在现有列旁边添加另一列。

public class UserInterface extends JFrame 
{

    private JPanel club;
    private JCheckBox[] check = new JCheckBox[10];

    public UserInterface()
    {
        super("SPORTS CLUB");
        club=new JPanel();

        add(club);

        club.setLayout(new GridLayout(10,2));

        check[0] = new JCheckBox("101");
        check[1] = new JCheckBox();
        check[2] = new JCheckBox();
        check[3] = new JCheckBox();
        check[4] = new JCheckBox();
        check[5] = new JCheckBox();
        check[6] = new JCheckBox();
        check[7] = new JCheckBox();
    check[8] = new JCheckBox();

        check[9] = new JCheckBox();

        club.setAlignmentY(JComponent.LEFT_ALIGNMENT);

        for (int i = 0; i < 10; i++) 
        {
            club.add(check[i]);
        }
    }


}

这是我的类Main包含main()函数;

import javax.swing.JFrame;

public class Main {

    public static void main(String[] args) 
    {
        UserInterface data=new UserInterface();
        data.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        data.setSize(300,200);
        data.setVisible(true);
    }

}

感谢任何一点帮助,甚至欢迎参考。

2 个答案:

答案 0 :(得分:2)

  

如何添加其他列

更改

// 10 rows, 2 columns
club.setLayout(new GridLayout(10,2));

为:

// variable number of rows, 2 columns
club.setLayout(new GridLayout(0, 2));

请注意,执行此操作时,每个奇数复选框都在左侧,甚至在右侧,因此,如果您希望特定列中的特定复选框,则添加顺序很重要。

答案 1 :(得分:0)

因此,如果我正确解释您的问题,您需要2列复选框吗? 首先不要将Arrays用于这样的任务,它们不是动态的,这使得代码有点难看。你甚至都不需要它。

首先,您要使用布局管理器网格创建JPanel:

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

现在用Checkboxes填充面板,并为每个Checkbox提供自己的Action Command。通过这种方式,您可以更好地使用Listeners。

for(int i = 0; i < 10; i++){
JCheckbox c = new JCheckbox();
c.setActionCommand(i);
grid.add(c);
}

这是一种比使用数组更优雅的解决方案。希望这有帮助