2014-04-03 60 views
0

我有一個默認窗口及其構造函數,並且知道我希望我的所有窗口都可以安裝。然後我想用其各自的接口定製其餘的窗口。將Jlabel添加到擴展類的面板中

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

public class Default_window extends JFrame { 

    protected BorderLayout layout = new BorderLayout(); 

    public Default_window(){ 
     setTitle("My Program"); 
     setLayout(layout); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     Dimension Window_size = new Dimension(500,500); 

     JPanel mypanel= new JPanel(); 

     add(mypanel, BorderLayout.CENTER); 

     getContentPane(); 
     setResizable(false); 
     setSize(Window_size); 
     setVisible(true); 

    } 

} 

這是自定義屏幕我想創建:

import javax.swing.*; 


public class Login_screen extends Default_window{ 
    JLabel user_name = new JLabel("Username: "); 

    public Login_screen(){ 
    // insert way to add Jlabels to the panel here. 

    } 


} 

但我不能說加(USER_NAME)。它不知道該把它放在哪裏。 任何幫助很高興讚賞。我是大學畢業生,周圍沒有人對編程有所瞭解。 #forever_alone

+0

你能解釋你爲什麼要擴展'Default_Window'嗎?你在做什麼試圖達到什麼目的? –

+0

我想要沒有冗餘。我想要一個窗口具有默認窗口的所有功能,然後能夠根據我的喜好在其他類中修改它。 – user3494146

回答

1

Default_window正在延伸JFrame,這是一個頂級容器。您必須將您的組件添加到您名爲mypanelJPanel

嘗試創建一個擴展爲JPanel的第三類,例如Default_panel並在其中添加組件。讓Login_screen延伸Default_panel,然後您將能夠撥打add(...)

繼承與創建相當複雜的面板結合起來可能非常困難,特別是如果您想要極大的靈活性(將插件組件放置在默認組件之間的任何位置)。因此,我會建議創建一些GUI構建器類,它負責收集所有組件約束,並且當每個組件已經「註冊」時,它可以創建JPanel並選擇一個LayoutManager

如果您可以避免使用可插拔的GUI,請避免使用它。