ify*_*dig 1 java swing layout-manager boxlayout
我正在尝试创建一个非常简单的应用程序,它在状态栏面板上方有一个JSplitPane(分为JTabbedPane和JPanel).我想使用一个简单的布局(即BoxLayout,FlowLayout或BorderLayout),但我已经尝试了,他们都给了我同样的错误.我尽可能地简化了代码以显示错误.
错误是主框布局(框架)中应该只有2个区域:顶部(带有黑色边框的JSplitPane)和底部(带有JPanel状态栏).但是,当我添加状态栏时,左上角创建的第三个区域不包含任何内容.关于如何摆脱它的任何想法?
public static void main(String[] args) {
JFrame frame = new JFrame("Application");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
// Create left side of the application
JTabbedPane tabby = new JTabbedPane(JTabbedPane.LEFT);
// Create right side of the application
JPanel rightPanel = new JPanel(new BorderLayout());
// Create the status bar at the bottom
JPanel statusBar = new JPanel(new BorderLayout());
JPanel statusBarPanel = new JPanel();
statusBarLabel = new JLabel("Status Bar");
statusBarPanel.add(statusBarLabel);
parent.add(statusBarPanel);
JSplitPane mainPain = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, tabby, rightPanel);
frame.add(mainPain);
frame.add(statusBar);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个非常简单的应用程序,它在状态栏面板上方有一个JSplitPane(分为JTabbedPane和JPanel).
通常你只需使用BorderLayout框架的默认值然后执行:
frame.add(splitPane, BorderLayout.CENTER);
frame.add(statusBar, BorderLayout.PAGE_END);
Run Code Online (Sandbox Code Playgroud)
状态栏通常是一个或多个显示信息的标签,因此它们在底部以固定大小显示.
然后,另一个面板将包含应用程序的主要组件.然后,这些组件在调整大小时将获得帧的任何额外空间.
但我试过了,他们都给了我同样的错误
parent.add(statusBarPanel);
Run Code Online (Sandbox Code Playgroud)
变量"parent"不存在.摆脱它.将状态栏添加到框架,如上所示.