使用Java中的复选框启用/禁用JComponents的困难

时间:2013-01-17 16:39:02

标签: java swing checkbox actionlistener jcomponent

我在这里遇到一点困难,在运行时禁用/启用少量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);            
    }
}

帮助表示感谢

3 个答案:

答案 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。