2012-03-29 20 views
1

私はこのコードを使って簡単なGUIを作成していますが、GUIコンポーネントをフレームに表示しようとしています。ただし、プログラムを実行すると、JTableなどのコンポーネントが表示されずにフレームのみが表示されます。Java - GUIコンポーネントが表示されません

任意のアイデアなぜですか?

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class GUI extends JFrame { 
    public void buildGui() { 
     JFrame frame = new JFrame("Hotel TV Scheduler");  
     frame.setVisible(true); 

     Container contentPane = frame.getContentPane(); 

     JPanel mainPanel = new JPanel(); 
     mainPanel.setLayout(new BorderLayout()); 

     JPanel listPanel = new JPanel(); 
     listPanel.setLayout(new FlowLayout()); 

     JTable chOneTable = new JTable(); 
     JTable chTwoTable = new JTable(); 
     JTable listTable = new JTable(); 

     listPanel.add(chOneTable); 
     listPanel.add(chTwoTable); 
     listPanel.add(listTable); 

     contentPane.add(listPanel); 
    } 
} 

答えて

3

あなたはJTablesにpreferredSize()を設定し、その後pack()を行う必要があります。

編集:

pack()setVisible(true)を移動しました。これはorder which is used by Sun/Oracleです。

public class GUI extends JFrame { 
    public void buildGui() { 
     JFrame frame = new JFrame("Hotel TV Scheduler"); 

     Container contentPane = frame.getContentPane(); 

     JPanel mainPanel = new JPanel(); 
     mainPanel.setLayout(new BorderLayout()); 

     JPanel listPanel = new JPanel(); 
     listPanel.setLayout(new FlowLayout()); 

     Dimension d = new Dimension(100, 100); 

     JTable chOneTable = new JTable(); 
     chOneTable.setPreferredSize(d); 

     JTable chTwoTable = new JTable(); 
     chTwoTable.setPreferredSize(d); 

     JTable listTable = new JTable(); 
     listTable.setPreferredSize(d); 

     listPanel.add(chOneTable); 
     listPanel.add(chTwoTable); 
     listPanel.add(listTable); 

     contentPane.add(listPanel); 

     frame.pack(); 
     frame.setVisible(true); 
    } 
} 
+1

あなたは 'frame.setVisible(true);'を知っていますか?これは 'pack()'の後に来なければなりません:-) –

+0

うん、しかしそれは動作します...私は私の答えを変更します。 – alexvetter

+0

OPでも問題が出てきても試してみても、時にはうまくいきます:-) –

2
  1. ときの部品の理由のどれも現れていない(つまり、setVisible(true)

JFrameインスタンスを実現

  • JFrameインスタンスにコンポーネントを追加
  • JFrameインスタンスを構築JFrameインスタンスが表示されるのは、実現後にコンポーネントを追加するからです。コンポーネントを表示するには、上記の手順を実行するか、またはbuildGuiメソッドの最後に、コンテナの再検証/再描画を行います。

  • 関連する問題