我有一个默认窗口及其构造函数,并且知道我希望所有窗口如何设置。然后我想用各自的界面自定义其余的窗口。
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
最佳答案
Default_window
正在扩展JFrame
,这是一个顶级容器。您必须将组件添加到 JPanel
您将其命名为 mypanel
.
尝试创建一个扩展 JPanel
的第三个类,例如Default_panel
并在那里添加您的组件。让Login_screen
延长Default_panel
,然后您就可以调用 add(...)
.
继承与创建相当复杂的面板可能非常困难,特别是如果您想要很大的灵 active (将插件组件放置在默认组件之间的任何位置)。因此,我建议创建一些 GUI 构建器类,它负责收集所有组件约束,并且当每个组件都已“注册”时,它可以创建 JPanel
与 LayoutManager
你的选择。
如果你可以避免使用可插拔的 GUI,那就避免它。
关于java - 将 Jlabel 添加到扩展类的面板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22840602/