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自己重繪。 –