Java Swing - 无法使用边框布局正确显示内容,还出现非法组件位置错误

Java Swing- can't get things to display properly using Border Layout, also getting an illegal component position error

我只是写了一个简单的代码,我希望 canvas 出现在 JFrame 的中心,配置面板出现在同一 JFrame.However 的北部,然后将它们都添加到'canvas' 没有显示在 all.If 我只添加了 canvas 它确实显示了但是一旦我添加了配置面板它就不再显示了。

此外,如果我尝试在同一个 JFrame 的 SOUTH 中添加其他内容,无论如何都会出现非法组件位置错误..

说到 Swing,我是个彻头彻尾的菜鸟,如果答案很明显,我很抱歉,但我在过去几个小时里尝试谷歌搜索和研究,但没有任何运气。

这是我尝试过的:

public class MainFrame extends JFrame {
 ConfigPanel configPanel;
 ControlPanel controlPanel;
 DrawingPanel canvas;

 public MainFrame() {
 super("My Drawing Application");
 init();
 }

private void init() {
     setDefaultCloseOperation(EXIT_ON_CLOSE);

     canvas = new DrawingPanel(this);
     configPanel = new ConfigPanel(this);
     controlPanel=new ControlPanel(this);

      add(canvas,CENTER); 

      add(configPanel,NORTH);

      add(controlPanel,SOUTH); //this gives me a illegal component position error

     pack();

}

}
add(controlPanel,SOUTH);

所有行都应该有错误。我不确定为什么这是唯一突出显示的。代码应该是:

add(controlPanel, BorderLayout.SOUTH);

首选约束是使用:BorderLayout.PAGE_END。阅读有关 How to Use BorderLayout 的 Swing 教程部分,了解更多信息和工作示例。

此外,没有理由在构造函数中将框架传递给面板。如果出于某种原因您需要知道面板的框架,您可以在框架可见后调用 SwingUtiltites.windowForComponent(…) 方法。

请尝试 getContentPane().add(controlPanel, SOUTH); 而不是 add(controlPanel, SOUTH);

对您提供的代码中的每个组件执行此操作...