2016-05-09 8 views
0

インサイドパネルのサイズを変更:Javaの振幅はIフレームに以下の構造を有するcontentPanel

フレーム - >のcontentPaneパネル - > topPanelパネル - >表

これはコードである:

private JPanel contentPane; 
private JTable table; 
private JPanel topPanel; 

public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       ShowList frame = new ShowList(); 
       frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

public ShowList() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 675, 433); 

    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 

    topPanel = new JPanel(); 
    topPanel.setBounds(76, 76, 491, 245); 
    contentPane.add(topPanel); 
    topPanel.setLayout(null); 

    table = new JTable(); 
    table.setBounds(0, 0, 491, 245); 
    topPanel.add(table); 
} 

私が達成したいのは、フレームを大きくしてフレームをサイズ変更すると、これによって含まれるtopPanelとテーブルもサイズ変更され、フレームのサイズ変更前のサイズと同じサイズにはならないということです。私はレイアウトについて読んだことがあるが、それを動作させることはできない。なにか提案を?

+0

なぜ新しいキーワードでShowList()を呼び出していますか?それはクラスも方法もありません。 –

+0

Java GUIは、異なるロケールの異なるPLAFを使用して、異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 –

答えて

3

LayoutManagerを使用して、フレーム内のコンポーネントのサイズと位置を制御します。パネルのレイアウトマネージャーをnullに設定しないでください。

あなたが使用できるさまざまな種類のレイアウトの詳細については、"A Visual Guide to Layout Managers"をご覧ください。あなたのコードで

、例えば、私はBorderLayoutの使用します。

contentPane.setLayout(new BorderLayout()); 

を...

contentPane.add(topPanel, BorderLayout.CENTER); 
topPanel.setLayout(new BorderLayout()); 

...ところで

topPanel.add(table, BorderLayout.Center); 

、私が思いますあなたのクラスShowList extend JFrame setDefaultCloseOperationのようなメソッドは、そうでない場合にエラーを返します。

私はそれが役に立ちそうです。

関連する問題