2017-05-09 9 views
0

テーブルがカバーしている幅をJpanel上で増やしたいと思います。Java GUIテーブルの長さを固定します

JFrame jf = new JFrame(); 
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jf.setTitle("Person Table"); 
    jf.setSize(1100, 700); 

    JPanel jp1 = new JPanel();jp1.setBackground(Color.green); 

    JPanel jp2 = new JPanel(); jp2.setBackground(Color.red); 

    jp1.setSize(1100, 400); 
    jp2.setSize(980, 200); 

    JTable jt = new JTable(data,columnNames); jt.setSize(900, 350); 
    jt.setBackground(Color.ORANGE); 
      // Add table to JScrollpane 
    JScrollPane sp = new JScrollPane(jt); sp.setSize(1000, 380); 
    sp.setBackground(Color.CYAN); 
    jp1.add(sp); 

    jf.add(jp1); 
    jf.add(jp2); 
    jf.setVisible(true); 

これは私が

enter image description here

..私はスクロールを使用しない場合は列名が消え、サイズが大きくパン気づい出力

enter image description here

ですがまた、列名を表示したい。

+0

MigLayoutのようなLayoutManagerを使用していますか?これは通常、物事を簡素化します:http://stackoverflow.com/a/38457852/1368690 – hamena314

+0

あなたの変数名は恐ろしいです。コードを読みにくくします。 – Michael

+0

JFramesはデフォルトでBorderLayoutになっているので、JFrameにコンポーネントを追加するときは、BorderLayoutの位置を必ず設定してください。 BorderLayout.CENTER CENTERの位置は、ほとんどの場合、スクロールペインにテーブルを配置する場所です。スクロールペインを削除したときにテーブルヘッダーが消える理由は、テーブルがスクロールペインに追加されたときに、テーブルのJTableHeaderが自動的にJScrollPanes列ヘッダービューとして設定されるためです。スクロールして、レイアウトにJTableHeaderを追加する必要があります。 – Michael

答えて

3

AKAの変更、スクロールペインを維持し、それにjp1を置き換える:

jf.add(jp1); 

jf.add(jsp); 

にこのテーブルが全体の緑豊かなエリアを取るようになります*。これが必要でない場合は、ネストされたレイアウトを使用してください。

* LayoutManagerによって異なります。この場合、コンポーネントのサイズを変更しないFlowLayoutが使用されます。 GridLayoutまたはBorderLayoutを使用していた場合は、緑色の領域全体が塗りつぶされます。

+0

それは働いた..ありがとう – Rohaitas

+0

問題はありません!この質問に答えられたことを人々に知らせるために、回答を受け入れたものとしてマークしてください。ありがとう – DCON

+1

JPanelには、APIのデフォルトとしてFlowLayoutがあります(getPreferredSizeのみを受け入れ、サイズ変更はできません)。BorderLayout、eventに変更する必要があります。グリッドレイアウト – mKorbel

関連する問題