重畫一個JPanel因此,我正在製作一個繪畫程序,並且我有一個主要的Paint
類,它檢測鼠標輸入和顏色,以及一個類似左邊的工具欄,它包含一組工具,如畫筆尺寸變化和形狀變化。所以,我想在清除整個屏幕的類上添加一個清除按鈕到Tools
。我的問題是Paint
類正在持有它繪製的點的ArrayList,我不能從Tools
內重新繪製Paint
。從另一個JPanel
Paint
類
//imports
public class Paint extends JPanel{
private ArrayList<Brush> points;
...
public Paint() {
...
}
public void paintComponent(Graphics page) {
...
//draws all points in the arraylist
for (Brush b : points) {
//paint points
}
}
}
Tools
類
//imports
public class Tools extends JPanel
{
private JButton clear;
public Tools() {
clear = new JButton("Clear");
clear.addActionListener(new BrushInput());
}
public void paintComponent(Graphics page) {
...
}
private class BrushInput implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == clear) {
//clear points arraylist and repaint
}
}
}
}
我遇到的問題是,repaint()
是實例方法,所以我不能訪問Paint
的從Tools
內重繪。
所以,假設你的「工具」有那麼它知道應該如何談「畫」的一些方法基於選擇的內容,你爲什麼不能遵循相同的範式? – MadProgrammer
哦,這幅畫全部都在Paint中發生。 – L1ghtShadow
是的,但是基於工具欄上選擇的內容,「Paint」如何知道「如何」繪製?據推測,你必須配置'Paint'一些如何? – MadProgrammer