0

在运行时使用复选框禁用/启用几个 JComponents 时,我在这里没有什么困难。我试过做if(checkbox.isSelected(){} ,但没有奏效。当我尝试添加时addActionListener(this),出现错误“AbstractButton 类中的方法 addActionListiner 不能应用于给定类型:必需的动作监听器:找到 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);            
    }
}

帮助感谢谢谢

4

3 回答 3

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并直接使用,而不是子类化该类。

于 2013-01-17T16:42:44.903 回答
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());
        }
    }
}
于 2013-01-17T16:44:07.107 回答
-1

如果需要,您可以在 JCheckBox 上使用 ChangeListener 而不是 ActionListener。

于 2013-01-17T16:54:16.483 回答