将 JButton 数组添加到 JPanel(按钮不可见)
Add JButton array to a JPanel (buttons not visible)
我正在尝试使用 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();
}
}
我做错了什么?
问题是您的 for 循环中的条件无效。将 > 替换为 <:语句 0 > 15 is never is never is never is never evaluated to true
这就是为什么你的循环永远不会开始迭代:
for(int i = 0; i < 15; i++)
此外,在向数组分配项目之前,您必须使用 new
关键字创建数组。否则你会得到 NullPointerException
:
buttons = new JButton[15];
首先,我认为你的 for 循环应该像这样
for (int i = 0; i < 15; i++)
然后,您必须初始化按钮引用
JButton buttons[] = new JButton[15];
通常当你使用 for 循环时,你必须为每个循环初始化你的对象。
例如,如果你有一个 TextView,你必须这样做:
TextHeaders[i] = new TextView([activity_name].this);
对于您的问题,
buttons[i] = new JButton (this);
我正在尝试使用 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();
}
}
我做错了什么?
问题是您的 for 循环中的条件无效。将 > 替换为 <:语句 0 > 15 is never is never is never is never evaluated to true
这就是为什么你的循环永远不会开始迭代:
for(int i = 0; i < 15; i++)
此外,在向数组分配项目之前,您必须使用 new
关键字创建数组。否则你会得到 NullPointerException
:
buttons = new JButton[15];
首先,我认为你的 for 循环应该像这样
for (int i = 0; i < 15; i++)
然后,您必须初始化按钮引用
JButton buttons[] = new JButton[15];
通常当你使用 for 循环时,你必须为每个循环初始化你的对象。 例如,如果你有一个 TextView,你必须这样做:
TextHeaders[i] = new TextView([activity_name].this);
对于您的问题,
buttons[i] = new JButton (this);