私はJFrameを持っていて、その内部にJScrollPaneがあり、JScrollPaneの中にJPanelがあります。 JScrollPane内のJPanelを変更するボタンクリックマウスリスナーがあります。マウスリスナーのコードは次のとおりJFrameのサイズを変更した後にのみビューを更新する
@Override
public void mouseClicked(MouseEvent arg0) {
searchResult.updateInfo();
}
updateInfoは、検索結果のJPanel内のJPanelの束を追加して方法。このリスナーに関連付けられたボタンをクリックすると、何も起こりませんが、JFrameのサイズを変更すると、ビューが更新されます。なぜこれがですか?
私はJFrameのを再描画しようとしたが、それはそれはあなたが必要とする目に見えるGUIからコンポーネントを追加/削除した後、この searchResult.removeAll(); searchResult.updateInfo(); searchResult.validate(); searchResult.repaint();
LayoutManagerは、コンポーネントのレイアウト方法についての最初のレンダリング時にのみ尋ねられるからです。ここで説明したように、 'revalidate()'を呼び出すことによってLayoutManagerにこれを再度依頼するようにコンポーネントに指示する必要があります。 – ZeissS
ありがとう!これは私の問題を解決した – aherlambang