我想在我的JApplet中添加4个JPanels,我为它们的每一个都设置了不同的颜色。但是没有任何颜色显示 - 我的意思是我看不到输出。没有任何颜色。以下代码位于
init()
方法中。 this.setSize(1400, 780);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setLayout(null) ;
setLayout(null) ;
Panel1 = new JPanel() ;
Panel2 = new JPanel () ;
Panel3 = new JPanel() ;
Panel4 = new JPanel() ;
Label1 = new JLabel ("Label1") ;
Label2 = new JLabel ("Label2") ;
Label3 = new JLabel ("Label3") ;
Label4 = new JLabel ("Label4") ;
Panel1.add(Label1) ;
Panel2.add(Label2) ;
Panel3.add(Label3) ;
Panel4.add(Label4) ;
// Panel 1 "About Me"
Panel1.setSize(140,390) ;
Panel1.setLocation(0,0) ;
Panel1.setBackground(Color.red) ;
Panel1.setVisible(true) ;
this.add(Panel1) ;
// Panel 2 "MyHoppies"
Panel2.setSize(140,390) ;
Panel2.setLocation(0,700) ;
Panel2.setBackground(Color.yellow) ;
this.add(Panel2) ;
// Panel 3 "Photo Gallery"
Panel3.setSize(140,390) ;
Panel3.setLocation(390,0) ;
Panel3.setBackground(Color.black) ;
this.add(Panel3) ;
// Panel 4 "Happey face"
Panel4.setSize(140,390) ;
Panel4.setLocation(390,700) ;
Panel4.setBackground(Color.pink) ;
this.add(Panel4) ;
setBackground
(和setLocation
)吗? - assyliasthis.setSize(1400, 780);
不要设置框架的大小,也不要扩展框架 - 只需使用一个实例。this.setVisible(true);
在添加组件并调用pack()
之后再执行此操作。this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
如果从小程序中调用此方法,将会出现问题 - 即使是受信任的小程序也不应显式关闭VM。this.setLocationRelativeTo(null);
使用setLocationByPlaftform(true)
。this.setLayout(null) ;
请参见mKorbel的答案。setLayout(null) ;
是的,JRE已经在第一次编写时听到了您的声音。3)
的替代方案吗?有时候我会用WindowListener(如果我想在关闭应用程序之前保存一些内容),但在那里,我也调用System.exit(0);
。 - brimboriumJFrame.DISPOSE_ON_CLOSE
就是这个问题的简短答案。在自定义操作完成后,调用frame.dispose()
,虚拟机应该会自动退出。如果它无法退出,要么是applet仍在加载,要么是有另一个非守护线程在运行。更多细节,请参考Q&A网站。;) - Andrew Thompson