我的输出在JAVA中只打印一个矩形

我的输出在JAVA中只打印一个矩形,java,user-interface,Java,User Interface,这只显示b;然而,这打印出了一个 public static void createAI() { AI a = new AI(10,10,15,15); frame.add(a); AI b = new AI(100,100,15,15); frame.add(b); } 为什么我不能用一种方法同时做这两件事? 感谢您的反馈可能b在a之上。尝试反转添加顺序,或使用调试器逐行执行。JFrame的默认布局管理器是BorderLayout。如果使

这只显示b;然而,这打印出了一个

 public static void createAI()
{        
    AI a = new AI(10,10,15,15); 
    frame.add(a);
    AI b = new AI(100,100,15,15);
    frame.add(b);

}
为什么我不能用一种方法同时做这两件事?
感谢您的反馈

可能b在a之上。尝试反转添加顺序,或使用调试器逐行执行。

JFrame的默认布局管理器是
BorderLayout
。如果使用添加(…)方法而不指定约束,则组件将添加到
边界布局的
中心
。但是,只能将单个零部件添加到中心,因此仅显示最后添加的零部件

尝试以下方法:

 public static void createAI()
{        
    AI a = new AI(10,10,15,15); 
    frame.add(a);
}
JPanel默认使用
FlowLayout
,因此现在组件应该水平显示


如果这不是您想要的布局,请阅读上Swing教程中的部分以了解更多信息和示例。

您使用的是哪种布局?还有,什么是
AI
?我不确定我使用的是什么布局管理器。AI是我创建的一个类。它补充道:我试过这个,但没用AI a=新AI(10,10,15,15);AI b=新AI(100100,15,15);框架.添加(b);框架.添加(a);这就是您的建议吗?或者您可以将组件添加到BorderLayout的不同区域,如:
frame.getContentPane().add(BorderLayout.SOUTH,a)
frame.getContentPane().add(BorderLayout.WEST,b)
@Eypros,add(…)方法的方法签名是
add(组件、对象)
。是的,我知道你的方法签名确实存在,但如果你阅读API,你会发现你建议的方法已经过时十多年了。当你说过时是什么意思?JFrame的原始签名是
frame.getContentPane().add(region,component)。您指的是框架(AWT)?对于JFrame,Java 7引用:作为一种惯例,add及其变体、remove和setLayout已被重写,以便根据需要转发到contentPane,这不会使其过时。@Eypros,
frame.getContentPane()
返回一个
容器对象。然后在
容器
对象上调用
add(…)
方法。阅读API时,您需要查看
Container.add(…)
方法。您还可以阅读上的Swing教程,了解有关使用BorderLayout的更多信息和示例。
JPanel panel = new JPanel();
panel.add(a);
panel.add(b);
frame.add(panel);