声明j2,j4等变量时时给它一个final修饰符试试看,按道理是不需要的,你没有改变j2,j4的值,事实上是不可变的。
经过验证JDK1.7不够智能编译不过去,解决方案
final JCheckBox j4 = new JCheckBox();
jdk1.7确实存在这个问题,可以升级到1.8。用jdk1.8编写没有问题的,
package fx_demo;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
public class CheckBox extends JFrame{
private static final long serialVersionUID = -5961219595924455437L;
public CheckBox () {
setTitle("checkbox");
Container c = getContentPane();
c.setLayout(new BorderLayout());
JCheckBox j4 = new JCheckBox("选项1");
j4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
boolean selected = j4.isSelected();
System.out.println(selected);
}
});
}
}
jdk1.7升级到1.8
加final,虽然1.8不加也行,只要真的是没有变过