5

パネル p1 を持つフレーム x1 を作成しました。x1 がロードされると、チェックボックスが p1 に動的に追加されます。p1 に追加されるチェックボックスの数は、特定の基準を満たすデータベース テーブル (t1) 内のデータ値の数によって異なります。

フレーム x1 にはボタン b1 があります。b1 をクリックすると、データベース テーブル t1 のデータ値を変更できる別のフレーム x2 が表示されます。x2 の「更新」ボタンは、データ値に加えられた変更を反映するように t1 を更新します。

変更後、x2 が閉じられたときに、フレーム x1 のパネル p1 を自動的に更新して、データベースに加えられた変更を反映させたいと考えています。つまり、基準を満たすデータ値の数は、x2 の t1 の変更後に変更された可能性があるため、その数p1 に表示されるチェック ボックスの数も変更されている可能性があります。

x2 から x1 のパネル p1 のコンポーネントを更新して再ロードするにはどうすればよいですか。

誰かが私が問題を解決するのを手伝ってくれるかどうか疑問に思っていました. 事前に感謝し、質問のテキストの負荷について申し訳ありません.

    In x2:

       private void UPDATEActionPerformed(java.awt.event.ActionEvent evt)
         {
        //x1 is an object of ParentFrame

        ParentFrame f1=new ParentFrame();
              f1.fillPanel();
              //fillpanel()fills p1 with checkboxes after running validate() and repaint() on it


             }
4

4 に答える 4

9

b1 をクリックすると、データベース テーブル t1 のデータ値を変更できる別のフレーム x2 が表示されます

  • 代わりにCardLayoutを使用してください

p1 に追加されるチェックボックスの数は、特定の基準を満たすデータベース テーブル (t1) 内のデータ値の数によって異なります。

JPanel の現在のコンテンツが削除されていることを確認してから、

p1.revalidate();
p1.repaint();
  • の新しいインスタンスを再作成しないでくださいJPanel。次に、この Objcet を に追加し、&をJFrame呼び出す必要があります (このコンテナを拡張しないことを願っています :-)validate()repaint()JFrame

変更後、x2 が閉じられると、フレーム x1 のパネル p1 が自動的に更新され、データベースに加えられた変更が反映されます。つまり、基準を満たすデータ値の数は、x2 の t1 の変更後に変更された可能性があるため、その数p1 に表示されるチェック ボックスの数も変更されている可能性があります。

  • 代わりにCardLayoutを使用してください

  • JFramesを 2 つ以上作成しないでください。JDialog代わりに、

  • インスタンスを 1 つだけ作成JDialog( setDefaultCloseOperation(JDialog.CLOSE...)) し、このコンテナーを親からの別のアクションに再利用します

于 2012-11-15T07:44:13.680 に答える
3

通常、UI への変更を実際に正しく表示するには、a を呼び出してから a を呼び出しますvalidate()repaint()

于 2012-11-15T07:36:11.963 に答える
1

フレーム f1 をフレーム f2 に渡す必要があります

JFrame Frame;
public f1(JFrame f){
    frame=f;
}

次に、close メソッドを記述します

int closeFrame(){
    f.fillPanel();
    f.show();
    return JFrame.HIDE_ON_CLOSE;
}

フレーム f2 のデフォルトのクローズ操作を設定する

public f1(JFrame f){
    frame=f;
    this.setDefaultCloseOperation(closeFrame());
}

大丈夫だといいのですが。

于 2014-08-08T05:36:21.050 に答える