Java 如何将事件添加到复选框?
我试图画一些形状,我需要添加改变颜色作为选择复选框的事件。如何编写在选中复选框时更改颜色的新方法 创建JCheckBox的方法:Java 如何将事件添加到复选框?,java,swing,user-interface,graphics2d,jcheckbox,Java,Swing,User Interface,Graphics2d,Jcheckbox,我试图画一些形状,我需要添加改变颜色作为选择复选框的事件。如何编写在选中复选框时更改颜色的新方法 创建JCheckBox的方法: public class Paint extends JFrame { public Paint() { JCheckBox redBtn = new JCheckBox("Red"); } } 方法,其中为绘制矩形的颜色: private class PaintSurface extends JComponent { public void p
public class Paint extends JFrame {
public Paint() {
JCheckBox redBtn = new JCheckBox("Red");
}
}
方法,其中为绘制矩形的颜色:
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);
}
}
编辑:
这就是ActionListener应该是什么样子
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
JCheckBox a = (JCheckBox) actionEvent.getSource();
Color tmp = redBtn.isSelected() ? Color.RED : null;
}
};
您可以将ActionListener添加到JCheckBox,它只需在绘图JComponent上调用
repaint()
。然后在paintComponent内部,通过调用isSelected()
检查复选框的状态,并根据布尔结果确定颜色
Color tmp = redBtn.isSelected() ? SELECTED_COLOR : null;
您可以将ActionListener添加到JCheckBox,它只需在绘图JComponent上调用
repaint()
。然后在paintComponent内部,通过调用isSelected()
检查复选框的状态,并根据布尔结果确定颜色
Color tmp = redBtn.isSelected() ? SELECTED_COLOR : null;
如回答(+1)所述,使用
paintComponent(Graphics g)
而不是paint(Graphics g)
这个聪明的东西,redBtn.isSelected()?所选颜色:空代码>在现实世界中是不受欢迎的…不幸的是,它仍然存在。Mathew:不,您的代码不会工作,因为您的tmp变量是actionPerformed方法的局部变量,因此不会对paintComponent方法可见。如果您将tmp作为类的实例字段,那么是的,它可能会工作。您仍然需要调用repaint()
使JComponent重新绘制自己。如回答(+1)所述,使用paintComponent(Graphics g)
而不是paint(Graphics g)
这个聪明的东西,redBtn.isSelected()?所选颜色:空代码>在现实世界中是不受欢迎的…不幸的是,它仍然存在。Mathew:不,您的代码不会工作,因为您的tmp变量是actionPerformed方法的局部变量,因此不会对paintComponent方法可见。如果您将tmp作为类的实例字段,那么是的,它可能会工作。您仍然需要调用repaint()
,以使JComponent自身重新绘制。