0

私のコードは、x(JFrame を拡張)、y(JPanel を拡張)、z の 3 つのクラスで構成されています。x には主な機能があります。これには borderLayout があり、左と中央の 2 つのパネルがあります。左のパネルには、ユーザーが値を入力する JButton と JTextField の束があり、これらの値は、y クラスによって処理される中央のパネルに何かを描画するために使用されます。

z クラスは、一般的な計算目的で y クラスによって使用されます。これで、プログラムの作成はほぼ完了し、左パネルの「クリア」ボタンに取り組んでいます。これにより、ユーザーが入力したすべてのテキストと中央パネルに描画されたもの (y クラスによって処理されます) がクリアされます。

私ができることは、いくつかの値をデフォルト値に設定し、中央のパネルを repaint() することですが、問題は、変数がたくさんあり、z クラス (y によってインスタンス化される) に再び変数がたくさんあることです。 .

これは混乱して面倒なので、何か方法があるかどうか考えています (ここではガベージ コレクションの規則に反しています) x クラスの y のインスタンスを強制終了して、新しいインスタンスを作成することができます。それはとてもきれいになります。このような状況で私がすべきことを教えてください。ありがとう。

編集:パネルに既に描画されているものをクリアボタンで削除したいので、xクラスでこれを行うことができますか?

remove(myRightpanelInstance);
myRightPanel myRightpanelInstance2 = new myRightPanel();
add(myRightpanelInstance2, BorderLayout.CENTER);

それはところで動作しません。

4

1 に答える 1

0

編集に基づいて、新しいパネルを追加し、古いパネルを上書きします。簡単にできます:

 MyRightPanel myRightPanelInstance2 = new myRightPanel();
 add(myRightPanelInstance2, BorderLayout.CENTER);

これにより、既存のパネルが新しいパネルで上書きされます。

このコードがクリア ボタンのリスナーにあることを確認してください。これは、リスナー内でこのコードを呼び出した場合にのみ発生します。

  clearButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //Either above code here or above code in a method and method call here
        }
    })
于 2012-11-26T19:45:03.043 に答える