将JButton数组添加到JPanel(按钮不可见)

时间:2018-07-16 09:49:22

标签: java swing jframe jpanel jbutton

我正在尝试使用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 个答案:

答案 0 :(得分:2)

问题是您的for循环中的条件无效。将> 替换为 << / strong>:永远不会将语句0> 15评估为true,这就是循环永远不会开始迭代的原因:

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

此外,在分配项目之前,还必须使用new关键字创建数组。否则,您会得到NullPointerException

buttons = new JButton[15];

答案 1 :(得分:2)

首先,我认为您的for循环应该像这样

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

然后,您必须初始化按钮引用

JButton buttons[] = new JButton[15];

答案 2 :(得分:0)

通常,在使用for循环时,必须为每个循环初始化对象。 例如,如果您有TextView,则必须这样做:

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

对于您的问题,

buttons[i] = new JButton (this);