JFrame上的JPanel数组

Cha*_*haz 1 java user-interface swing

public frame() {
   JFrame frame = new JFrame("Test");
   frame.setSize(400,300);
   frame.setLocationRelativeTo(null);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   setLayout(new GridBagLayout());
   int i = 4;
   int j = 4;
   JPanel[][] panelHolder = new JPanel[i][j];

   for (int a = 0; a < i; a++) {
       for (int b = 0; b < j; b++) {
           panelHolder[a][b] = new JPanel();
           add(panelHolder[a][b]);
       }
   }
   panelHolder[3][2].setForeground(Color.BLUE);
   JButton enter = new JButton("Enter");
   panelHolder[0][0].add(enter);

   frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

当我尝试将一个组件添加到面板或设置颜色没有任何变化时,我使用了其他地方的代码,但是我在前几天写下来并且再也找不到它,但是循环正在将JPanel添加到框架中?那为什么我不能添加到JPanels?

Ita*_*rG3 5

问题是你的构造函数中有一个与你的类名相同的对象,但是在调用时setVisible(),你没有使用它.你可以通过使你的类扩展JFrame,然后使用这个构造函数来解决这个问题:

public frame() {
    setSize(400, 300);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new GridBagLayout());
    int i = 4;
    int j = 4;
    JPanel[][] panelHolder = new JPanel[i][j];

    for (int a = 0; a < i; a++) {
        for (int b = 0; b < j; b++) {
            panelHolder[a][b] = new JPanel();
            add(panelHolder[a][b]);
        }
    }
    panelHolder[3][2].setForeground(Color.BLUE);
    JButton enter = new JButton("Enter");
    panelHolder[0][0].add(enter);

    setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)