将Jlabel添加到扩展类的面板中

时间:2014-04-03 14:21:44

标签: java swing inheritance user-interface awt

我有一个默认窗口及其构造函数,并且知道我希望我的所有窗口设置如何。然后我想用各自的界面自定义其余的窗口。

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. 

    }


}

但我不能说add(user_name)。它不知道放在哪里。 任何帮助都很高兴。我是大学毕业生,周围没有人知道编程。 #forever_alone

1 个答案:

答案 0 :(得分:1)

Default_window正在扩展JFrame,这是一个顶级容器。您必须将自己的组件添加到名为JPanel的{​​{1}}。

尝试创建扩展mypanel的第3个类,例如JPanel并在那里添加您的组件。让Default_panel延长Login_screen,然后您就可以致电Default_panel

继承与创建相当复杂的面板相结合可能非常困难,特别是如果您需要很大的灵活性(将插件组件放在默认组件之间的任何位置)。因此,我建议创建一些GUI构建器类,它负责收集所有组件约束,并且当每个组件都已“注册”时,它可以使用您选择的add(...)创建JPanel

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