Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing-无法使用边框布局正确显示内容,也会出现非法组件位置错误_Java_Swing_Jframe_Layout Manager - Fatal编程技术网

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

Java Swing-无法使用边框布局正确显示内容,也会出现非法组件位置错误,java,swing,jframe,layout-manager,Java,Swing,Jframe,Layout Manager,我刚刚编写了一个简单的代码,其中我希望画布显示在JFrame的中心,配置面板显示在同一JFrame的北部。但是在添加它们之后,“画布”根本不会显示。如果我只添加画布,它会显示,但一旦添加配置面板,它就不会再显示 此外,如果我试图在同一JFrame的南部添加其他内容,无论发生什么,我都会得到一个非法的组件位置错误 说到挥杆,我是个十足的傻瓜。如果答案很明显,我很抱歉,但在过去的几个小时里,我一直在用谷歌搜索和研究这个问题,但没有任何运气 以下是我尝试过的: public class MainFra

我刚刚编写了一个简单的代码,其中我希望画布显示在JFrame的中心,配置面板显示在同一JFrame的北部。但是在添加它们之后,“画布”根本不会显示。如果我只添加画布,它会显示,但一旦添加配置面板,它就不会再显示

此外,如果我试图在同一JFrame的南部添加其他内容,无论发生什么,我都会得到一个非法的组件位置错误

说到挥杆,我是个十足的傻瓜。如果答案很明显,我很抱歉,但在过去的几个小时里,我一直在用谷歌搜索和研究这个问题,但没有任何运气

以下是我尝试过的:

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, BorderLayout.SOUTH);
首选约束是使用:BorderLayout.PAGE\u END。有关更多信息和工作示例,请阅读上Swing教程的部分

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

所有行都应该有错误。我不知道为什么这是唯一突出的一个。代码应为:

add(controlPanel, BorderLayout.SOUTH);
首选约束是使用:BorderLayout.PAGE\u END。有关更多信息和工作示例,请阅读上Swing教程的部分

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

请尝试getContentPane.addcontrolPanel,SOUTH;而不是addcontrolPanel,SOUTH

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

请尝试getContentPane.addcontrolPanel,SOUTH;而不是addcontrolPanel,SOUTH


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

框架的add…方法将为您将组件添加到内容窗格中。框架的add…方法将为您将组件添加到内容窗格中。