import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;
public class Phynis extends JFrame{
JCheckBox[] chooser=new JCheckBox[3];
Phynis (String title){
super(title);
this.getContentPane().setLayout(new BorderLayout());
init();
this.setResizable(true);
this.setSize(100, 200);
this.setPreferredSize(new Dimension(100,200));
this.setBounds(200, 200,300, 600);
this.pack();
this.setVisible(true);
}
public void init(){
String[] cname={"第一","第二","第三"};
for(int i=0;i<3;i++){
chooser[i]=new JCheckBox();
chooser[i].setBounds(10, 20, 30, 30);
chooser[i].setText(cname[i]);
chooser[i].addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
if (e.getSource()==chooser[1]){}
for (int j=0;j<3;j++){
if (chooser[1].isSelected()==true){ }
}
}
}
);
}
this.add(chooser[0],BorderLayout.SOUTH);
this.add(chooser[1],BorderLayout.NORTH);
this.add(chooser[2],BorderLayout.WEST);
}
}在这段代码中,如果我将JCheckBox[] chooser=new JCheckBox[3];放在public void init()方法内,那么 if (chooser[1].isSelected()==true)这句会报错。为什么会出错?
另外请教一个问题:为什么这个程序生成的JFrame,只能拉左边调整宽度,而不能拉右边。
谢谢大家了。
public void init()和public void actionPerformed()是两个不同的方法,你需要在两个不同的方法中使用同一个对象,当然需要定义成成员变量,大家才能共享。
还有,下面个问题,为什么这个程序生成的JFrame,只能拉左边调整宽度,而不能拉右边。