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,只能拉左边调整宽度,而不能拉右边。
谢谢大家了。

解决方案 »

  1.   

    方法内定义的变量是方法中的局部变量,不能与其他方法共享使用。
    public void init()和public void actionPerformed()是两个不同的方法,你需要在两个不同的方法中使用同一个对象,当然需要定义成成员变量,大家才能共享。
      

  2.   

    懂得了,谢谢。 
    还有,下面个问题,为什么这个程序生成的JFrame,只能拉左边调整宽度,而不能拉右边。