我正在尝试制作一个框架,并在页面开始处添加一个工具栏,在底部添加一个状态栏,以及一个可以显示内部框架的桌面。但我只是得到一个空框架。我做错了什么?
谢谢。
public class AdminStart extends JFrame implements ActionListener{
private JToolBar toolBar;
private JDesktopPane desktop;
private StatusBar statusBar;
private JPanel panel;
//this is a class that i created and extends JToolBar
private ToolBarAdmin miToolBar;
private String ID = null;
private String type = null;
private String state = null;
public AdministradorInicio(String ID, String tipo, String estado){
super("Start");
setExtendedState(JFrame.MAXIMIZED_BOTH);
//setSize(JFrame.MAXIMIZED_HORIZ, JFrame.MAXIMIZED_VERT);
//setResizable(false);
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.ID = ID;
this.tipo = type;
this.estado = state;
toolBar = new JToolBar();
miToolBar = new ToolBarAdmin();
desktop = new JDesktopPane();
statusBar = new StatusBar();
panel = new JPanel();
for(int i = 0; i < miToolBar.toolBarTitles.length; i++){
miToolBar.boton[i].addActionListener(this);
}
panel.setLayout(new BorderLayout());
toolBar.setLayout(new FlowLayout(FlowLayout.LEFT));
toolBar.setFloatable(false);
toolBar.add(miToolBar);
desktop.setBackground(Color.DARK_GRAY);
panel.add(toolBar, BorderLayout.PAGE_START);
panel.add(desktop, BorderLayout.CENTER);
panel.add(statusBar, BorderLayout.PAGE_END);
add(panel);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
}
public static void main(String[] args) {
new AdminStart("sdsd","sdsd","sdsd");
}
}
这伤害了你:
setLayout(null);
使用
null
布局时,编码员完全负责指定每个组件的位置和大小。您最终还会得到非常严格的 GUI,几乎无法维护或升级,并且“可能”在某个系统和屏幕分辨率上看起来不错,但在其他地方可能看起来很糟糕。此外,正如 MadProgrammer 所说,“像素完美布局是现代 UI 设计中的一种幻觉。”解决方案,摆脱 setLayout(null)
并努力避免使用 null
布局。panel.setBounds(x, y, width, height);
否则该控件将不会放置在您的 JFrame 上。