OK、これをできるだけ良く説明しようとしています。私はかなりJavaに堪能ですが、広範な検索の後にこれに論理的な解決策を見つけることができません。パッケージAの中に描かれるグラフを含むJPanelクラスがあるとします。私はJCheckBoxのを持っているパッケージB内の別のクラスにおいて別のパッケージのJCheckBox ActionListenerからJPanelを再ペイントする
package A
public class DrawGraph extends JPanel
{
public DrawGraph()
{
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
// other stuff
}
public void updateGraph()
{
repaint();
}
}
選択すると、このクラスはDrawGraphクラスを初期化しないパッケージAのグラフの再描画をトリガする必要があること。そのクラスは他の場所で初期化されます。今、私はDrawGraphクラスの新しいインスタンスを作成することなく、私のDrawGraphクラスのupdateGraph関数を呼ぶのですか
package B
public class CheckBoxClass extends JPanel
public CheckBoxClass
{
graphicsCheckBox.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent cb)
{
GUI_Data.graphics = true;
DrawGraph.updateGraph(); // Calls Update Graph function
}
});
}
?私はrepaint()が静的ではないので、updateGraphメソッドを静的にすることはできないことを知っています。私はタイマーや他の複雑なやり方で非効率的な方法で再描画せずにこれを行う方法が必要であるように感じる。私は間違った方法でこの問題を見ていますか?基本的には、JCheckBoxクラスのactionlistenerからDrawGraphクラスの描画をトリガーする方法が必要です。この質問が明確でない場合は、私にお知らせください。私はそれを改訂することができます。事前に皆さんありがとう、これは私の最初の質問ですが、私はあなたに数年間使っています。
は、私も、シングルトンを使用して考えていなかったように愚かな、本当にありがとうございましたパターン。私は私の実装のためにあなたの答えを少し変えなければならなかったが、それと同じ原則。再度、感謝します。 –