我正在尝试制作一个简单的GUI,但遇到了一些错误。我想创建3个简单的按钮,让它们并排显示,屏幕的长度。我该怎么做呢?
到目前为止我的代码是:
public static void main(String[] args) {
JFrame frame = new JFrame ("JFrame");
JPanel panel = new JPanel( );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
JButton buttons[] = new JButton[2];
for(int i = 0;i<=buttons.length ; i++){
panel.add(buttons[i]);
}
frame.getContentPane( ).add( panel );
frame.setSize( 500, 500);
frame.setVisible( true );
}
答案 0 :(得分:4)
嗯,如果我记得的话,Java中的对象数组是用空引用初始化的。因此,在您的for中,您将向面板添加null。
你必须这样做:
JButton buttons[] = new JButton[2];
for(int i = 0;i < buttons.length ; i++){
buttons[i] = new JButton(/* whatever */);
panel.add(buttons[i]);
}
然后再次提出一个问题:如果您可以在创建按钮时添加它们,为什么要使用按钮数组?
答案 1 :(得分:2)
您需要先初始化阵列中的按钮。您可以像以下示例中那样执行此操作。
JButton buttons[] = new JButton[2];
for(int i = 0; i < buttons.length; i++){
buttons[i] = new JButton("" + i);
}
for(int i = 0; i < buttons.length; i++){
panel.add(buttons[i]);
}
问题是所有按钮最初都初始化为null
。并且组件不允许您向其添加null
。
答案 2 :(得分:2)
在将按钮添加到面板之前,您需要先初始化按钮。
for(int i = 0;i<buttons.length ; i++){
buttons[i] = new JButton();
panel.add(buttons[i]);
}
另外,请注意我对for循环i < buttons.length
而不是i <= buttons.length
所做的修改
这是使用各种JButtons(here)的一个很好的小例子。它还包括将ImageIcons添加到按钮。即一个错误按钮。
URL imgURL = JButtonDemo.class.getResource("Error.jpg");
ImageIcon icon = new createImageIcon(imgURL ); // should check that imgURL is not null
buttons[0] = new JButton("Error!",icon);
这使它们比默认JButton