2012-03-29 89 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

您應該設置在JTable中一個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()'後面加上:-) – 2012-03-29 13:45:37

+0

是的,但是試試看......我會改變我的答案。 – alexvetter 2012-03-29 14:44:05

+0

即使你嘗試OP給出的問題,甚至有時也會有效:-) – 2012-03-29 15:34:46

2
  1. 構建JFrame實例
  2. 添加組件到JFrame實例
  3. 實現了JFrame實例(即setVisible(true)

沒有組分的原因出現時,顯示的JFrame實例是因爲在實現後向其添加組件。如果要顯示組件,請按照上述步驟或在方法末尾重新驗證/重新繪製容器。