0

BorderLayout を使用し、jTable と layeredPane を含む JPanel があります。jTextPane の上に jComboBox が含まれているため、layeredPane を使用する必要があります。問題は、ユーザーが画面のサイズを変更しても、layeredPane のサイズが変更されないことです。どうすればこれを修正できますか? 私はこのようなものを持っています:

JPanel panel = new JPanel(new Borderlayout());
MyTable table = new MyTable(); 
panel.add(table, BorderLayout.CENTER);
JLayeredPane layeredPane = new JLayeredPane();
//addind things in the layered pane
panel.add(layeredPane, BorderLayout.PAGE_END); 

コンポーネントを重ねる必要があるため、レイヤード ペインにレイアウト マネージャーを使用しても機能しません。

4

2 に答える 2

1

投稿した例では、JLayeredPaneは、BorderLayoutを使用してパネルのSOUTH(BorderLayout.PAGE_END)の場所に配置されます。これは、CENTERのコンポーネントが、パネルに提供されるすべての追加スペースを使用することを意味します。そして、あなたはCENTERにあなたのテーブルを持っています。

JLayeredPaneをCENTERに配置し、テーブルをNORTHに配置するだけで、ペインにすべての追加スペースを確保できます。

BorderLayoutの詳細:http:
//docs.oracle.com/javase/tutorial/uiswing/layout/border.html

また、Swingレイアウトの詳細を読むこともできます:http:
//docs.oracle.com/javase/tutorial/uiswing/layout/index.html

于 2012-08-08T11:32:31.943 に答える
1
  • JLayeredPane に関する一般的な問題は、Null Layout を除く標準 LayoutManagers をサポートしていないため、その子が setBounds によって配置されることです。

  • JPanels Bounds を変更するには、イベント componentResized に ComponentListener を追加する必要があります。

  • 標準 LayoutManager を使用するために JPanel に配置された JComponents 用

  • Java6 用のカスタム JXLayer に基づいて Java7 用の適切な JLayer を使用することは、代替手段以上のものです。

于 2012-08-08T14:15:57.460 に答える