我在这里遇到一点困难,在运行时禁用/启用少量JComponents并带有一个复选框。我试过if(checkbox.isSelected(){}
但是没有用。当我尝试添加addActionListener(this)
我得到一个错误“方法时,类AbstractButton中的addActionListiner不能应用于给定的类型:required Action listiner:找到JudgeMain(它的一个类名) - 在构造函数中泄漏”this“
public class JudgeMain extends JFrame {
Connection conn = null;
ResultSet rs = null;
PreparedStatement pst = null;
LogInJ id = new LogInJ();
public String IdNumber;
public JudgeMain(LogInJ id)
{
initComponents();
ButtonGroup();
this.id = id;
initDetails();
yesCB.addActionListener(this);
if(yesCB.isSelected())
{
timeF.setEnabled(true);
catF.setEnabled(true);
yearsCB.setEnabled(true);
monthsCB.setEnabled(true);
}
}
帮助表示感谢
答案 0 :(得分:2)
班级JudgeMain
不代表ActionListener
类型。
您需要实现此界面才能调用
yesCB.addActionListener(this);
或者只是使用匿名监听器(注意,不需要检查源代码):
yesCB.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
timeF.setEnabled(yesCB.isSelected());
catF.setEnabled(yesCB.isSelected());
yearsCB.setEnabled(yesCB.isSelected());
monthsCB.setEnabled(yesCB.isSelected());
}});
附注:首选方法是创建JFrame
的实例并直接使用而不是继承类。
答案 1 :(得分:1)
您的课程需要实施ActionListener
:
这样的东西应该有用(虽然我不能确定,因为你的原始代码没有编译):
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.JFrame;
public class JudgeMain extends JFrame implements ActionListener {
Connection conn = null;
ResultSet rs = null;
PreparedStatement pst = null;
LogInJ id = new LogInJ();
public String IdNumber;
public JudgeMain(LogInJ id) {
initComponents();
ButtonGroup();
this.id = id;
initDetails();
yesCB.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (yesCB == e.getSource()) {
timeF.setEnabled(yesCB.isSelected());
catF.setEnabled(yesCB.isSelected());
yearsCB.setEnabled(yesCB.isSelected());
monthsCB.setEnabled(yesCB.isSelected());
}
}
}
答案 2 :(得分:-1)
如果需要,可以在JCheckBox上使用ChangeListener而不是ActionListener。