2013-05-01 91 views
1

我嘗試添加該面板:主類與類添加一個JPanel到一個JFrame

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

class TopPanel extends JPanel{ 
    public TopPanel() { 
     JPanel panel = new JPanel(); 
     JLabel label = new JLabel("Course Lookup GUI"); 
     panel.add(label); 
     panel.setVisible(true); 
    } 
} 

要像這樣的框架:

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

class CourseGUI extends JFrame{ 
    public CourseGUI() { 
     this.setLayout(new FlowLayout()); 
     this.setLocation(200,200); 

     TopPanel tPan = new TopPanel(); 
     MiddlePanel mPan = new MiddlePanel(); 

     this.add(tPan); 
     this.add(mPan); 

     this.setVisible(true); 
    } 

    public static void main(String[] args){ 
     CourseGUI cGUI = new CourseGUI(); 
    } 
} 

但沒有什麼是添加到該幀,我得到一個空的窗口。我究竟做錯了什麼?

回答

4

由於您的類已經擴展JPanel,因此不需要創建另一個面板。只需將標籤添加到課程本身

class TopPanel extends JPanel{ 
    public TopPanel() { 
     //JPanel panel = new JPanel(); 
     JLabel label = new JLabel("Course Lookup GUI"); 
     add(label); 
     //panel.add(label); 
     //panel.setVisible(true); 
    } 
} 

我同意雷梅斯的評論。不需要擴展JPanel來執行此功能。只要做到:

JPanel tPan = new JPanel; 
JLabel label = new JLabel("Course Lookup GUI"); 
tPan.add(label); 
this.add(tPan); 

甚至更​​加容易,因爲你只是增加一個組件到面板上,也沒有必要,甚至創建面板。只要:

JLabel label = new JLabel("Course Lookup GUI"); 
this.add(label); 
2

您需要在您目前沒有增加任何新功能,添加你panel到容器中TopPanel

add(panel); 

JPanel,你可以簡單地使用的JPanel,而不是子類的直接實例。撥打panel.setVisible(true)是不必要的。當頂層窗口可見時,Swing將使所需的組件可見。