私はペイントプログラムを作成しています。マウスの入力とペイントを検出するメインのPaint
クラスと、左側のツールバーであるTools
クラスを持っています。ブラシサイズの変更と形状の変更。したがって、画面全体をクリアするTools
クラスにクリアボタンを追加したいと思います。私の問題は、Paint
クラスが描画する点のArrayListを保持しているため、Paint
をTools
から再描画できないことです。私がいるJPanelを別の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()
はインスタンスメソッドですので、私はsがTools
内から再描画Paint
」にアクセスできないことです。
そうでは、あなたの「ツール」は「ペイント」に話をいくつかの方法を持っていることを前提とし選択されたものに基づいて、なぜあなたは同じパラダイムに従うことができないのですか? – MadProgrammer
ああ、ペイントでは絵がすべて起こっている。 – L1ghtShadow
ええ、しかし、「ペイント」は、ツールバーで選択されたものに基づいて、どのようにペイントするかを知っていますか?おそらくあなたはどのように 'ペイント'を設定する必要がありますか? – MadProgrammer