-2

私はJButton自分のスイングアプリケーションで 3 つの s を使用しています。各ボタンをクリックすると、対応するデータ ( でフォーマットJTable)JScrollPaneが に表示されJPanelます。

問題: のサイズを変更するJFrameと、JPanel現在の情報ではなく、デフォルトのボタン (最初にクリックしたボタン) の情報に置き換えられますJButton

私のサンプルコード:

      jbutton1.addActionListener(this);
      jbutton2.addActionListener(this); 

    public void actioPerformed(ActionEvent e){
    if(e.getActionCommand.equals("button1"))
    JPanel.add(table1);
     }
    if(e.getActionCommand.equals("button2"))
     JPanel.add(table1);
      }.......
4

2 に答える 2

1

のサイズJPanelを変更しても、突然コンポーネントが置き換えられたり、他のコンポーネントがパネルに追加されたりすることはありません。

私の最善の推測(質問の情報が限られているための推測です)は、実際にはボタンが機能せず、間違った情報が表示されるだけです。

投稿したコードにaddは、レイアウトの再検証なしで のみが含まれています。Container#addメソッドの javadoc を参照してください。サイズを変更すると、レイアウトが再検証され、実際に何が含まれているかがわかりますJPanel

可能な解決策:

  • 呼び出しinvalidaterepaint、あなたのパネルでもあなたのActionListener
  • a を使用しCardLayoutて、異なるコンポーネントを切り替えます

私は個人的にはこのCardLayoutオプションを好みますが、状況によって多少異なる場合があります。

table1投稿したコードでは、両方のボタンに追加することに注意してください。コピーと貼り付けの問題、または実際のコードの問題である可能性があります。

于 2012-12-25T17:15:02.180 に答える
0

問題を明確に表現できませんでした。ご不便をおかけして申し訳ございません。

JPanel.removeAll()メソッドで問題が修正されました。

JPanelに新しいコンポーネントを追加する前に、このメソッドを追加しました。これにより、JPanelの予期しない動作が修正されます。

于 2012-12-26T16:31:02.377 に答える