如何将事件添加到复选框?

mat*_*ewM 1 java user-interface swing graphics2d jcheckbox

我尝试绘制一些形状,我需要添加更改颜色作为选择复选框的事件.tmp当我选择复选框时,如何编写将改变颜色的新方法?

我创建JCheckBox的方法:

public class Paint extends JFrame {
public Paint() {

    JCheckBox redBtn = new JCheckBox("Red");

}
Run Code Online (Sandbox Code Playgroud)

}

方法是绘制矩形的颜色:

private class PaintSurface extends JComponent {
    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        Color tmp = null;   //If no checkbox selected, no color

        for (Shape s : shapes) 
            g2.setPaint(tmp);  //Here is color of shape
            g2.fill(s);
        }
    }
Run Code Online (Sandbox Code Playgroud)

编辑:

这是ActionListener应该是什么样子的?

ActionListener actionListener = new ActionListener() {
              public void actionPerformed(ActionEvent actionEvent) {
                  JCheckBox a = (JCheckBox) actionEvent.getSource();
                 Color tmp = redBtn.isSelected() ? Color.RED : null;
              }
};
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 5

您可以将ActionListener添加到JCheckBox,它只是调用repaint()绘图JComponent.然后在paintComponent中,通过调用isSelected()它来检查复选框的状态,并将您的Color基于布尔结果.

Color tmp = redBtn.isSelected() ? SELECTED_COLOR : null;
Run Code Online (Sandbox Code Playgroud)