代码之家  ›  专栏  ›  技术社区  ›  devamat

将jbutton数组添加到jpanel(按钮不可见)

  •  3
  • devamat  · 技术社区  · 6 年前

    我试图用java创建一个简单的计算器。为此,我创建了一个jbutton数组并将它们添加到jpanel中。

    问题 :按钮不可见。

    我还为测试添加了一个jlabel和一个jbutton,它们正确地显示出来。

    代码:

    package test;
    
    import java.awt.BorderLayout;
    import javax.swing.*;
    
    public class Test {
    
        JLabel testLabel = new JLabel("Test label", SwingConstants.CENTER);
        JButton testButton = new JButton("Test button");
    
        JButton buttons[];
    
        Test() {
    
            JFrame frame = new JFrame("Calculator");
    
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            JPanel panel = new JPanel();  
    
            for (int i = 0; i > 15; i++) {
    
                buttons[i] = new JButton(Integer.toString(i));
                panel.add(buttons[i], BorderLayout.CENTER);
    
            }
    
            panel.add(testButton, BorderLayout.CENTER);
            panel.add(testLabel, BorderLayout.CENTER);
    
            frame.setSize(500, 500);
    
            frame.add(panel, BorderLayout.CENTER);
    
            frame.setVisible(true);
        }
    
    
        public static void main(String[] args) {
    
            Test cTest = new Test();
    
        }
    
    }
    

    我做错什么了?

    3 回复  |  直到 6 年前
        1
  •  2
  •   am9417    6 年前

    问题是for循环中的条件无效。更换 > 具有 < :语句0>15从不计算为 true 这就是为什么循环从不开始迭代:

    for(int i = 0; i < 15; i++)
    

    此外,还必须使用 new 关键字,然后再将项目分配给它。否则你会得到 NullPointerException :

    buttons = new JButton[15];
    
        2
  •  2
  •   Dimitrije Milenkovic    6 年前

    首先,我认为你的for循环应该喜欢这样

    for (int i = 0; i < 15; i++)
    

    在那之后,你必须初始化你的按钮引用

    JButton buttons[] = new JButton[15];
    
        3
  •  0
  •   M'aiq the Coder    6 年前

    通常在使用for循环时,必须为每个循环初始化对象。 例如,如果您有一个textview,则必须执行以下操作:

    TextHeaders[i] = new TextView([activity_name].this);
    

    为了你的问题,

    buttons[i] = new JButton (this);