1
我尝试绘制一些形状,我需要添加更改颜色作为选择复选框的事件。当我选择复选框时,如何编写将改变颜色的新方法tmp
?如何添加事件复选框?
方法,其中创建JCheckBox的:
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;
}
};
使用'的paintComponent(图形G)',而不是'油漆(图形G)' – mKorbel
这个聪明的东西,'redBtn.isSelected()? SELECTED_COLOR:null;'在现实世界中皱起了眉头......不幸的是它仍然存在。 – mre
Mathew:不,你的代码不会工作,因为你的tmp变量对于actionPerformed方法是本地的,因此对于paintComponent方法是不可见的。如果你把tmp作为这个类的一个实例字段,那么是的,它可能会工作。你仍然需要调用'repaint()'来使JComponent自己重绘。 –