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)
您可以将ActionListener添加到JCheckBox,它只是调用repaint()绘图JComponent.然后在paintComponent中,通过调用isSelected()它来检查复选框的状态,并将您的Color基于布尔结果.
Color tmp = redBtn.isSelected() ? SELECTED_COLOR : null;
Run Code Online (Sandbox Code Playgroud)