java - 将 Action 监听器添加到 RadioPanel

标签 java swing actionlistener jcheckbox

我目前正在尝试为我的 JCheckBox 实现一个 Action 监听器,以便在选择它时,它将打开一个 JFileChooser 供用户选择他们想要的文件要使用的 GUI。对于初学者来说,我如何让控制台打印出“Box clicked!”当用户选中该框时?

自从我使用 Swing 编程以来已经有一段时间了,所以任何建议都会有帮助!

public class RadioPanel extends JPanel implements ActionListener
{

    private static final long serialVersionUID = -1890379016551779953L;
    private JCheckBox box;
    private JLabel label;

public RadioPanel(String message)
{
    this.setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    c.anchor = GridBagConstraints.WEST;
    c.gridx = 0;
    c.gridy = 0;
    box =  new JCheckBox();
    this.add(box,c);
    c.gridx = 1;
    c.gridy = 0;
    label = new JLabel(message);
    this.add(label, c);
}

最佳答案

我认为这是因为代码没有事件监听器。 请参阅下面我的代码。

import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


class RadioPanel extends JPanel implements ActionListener {
    private static final long serialVersionUID = -1890379016551779953L;
    private JCheckBox box;
    private JLabel label;

    public RadioPanel(String message) {
        this.setLayout(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        c.anchor = GridBagConstraints.WEST;
        c.gridx = 0;
        c.gridy = 0;
        box = new JCheckBox();

        // here
        box.addActionListener(event -> {
            JCheckBox checkBox = (JCheckBox) event.getSource();
            if (checkBox.isSelected()) {
                System.out.println("Box clicked!");
            }
        });

        this.add(box, c);
        c.gridx = 1;
        c.gridy = 0;
        label = new JLabel(message);
        this.add(label, c);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
    }
}

关于java - 将 Action 监听器添加到 RadioPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54694458/

相关文章:

java - getActionCommand在代码中不起作用(观看教程系列)

java - Java 中的 SSLServerSocket 和 SSLSocket 握手异常

java - 链接方法时无法取消引用 Void

java - 重写 setPreferredSize() 和 getPreferredSize()

Java - 将 system.out.println 重定向到 JLabel

java - 用于在框架内的面板上显示不同半径的圆的代码

java - 存在 JMenu 时 JPanel#paintChildren(Graphics) 的行为不正确?

java - 如何编写一个记录参数和返回值的拦截器?

java - 按下按钮后如何使用自己的 ActionListener 类将文本附加到 JTextArea

java - ActionListener 似乎不起作用?