2017-02-11 74 views
0

我想添加按钮到框架,我尝试以两种方式。将布局管理器添加到JPanel和JFrame

  1. 更改JPanel的布局,然后直接添加按钮到面板。 (在下面的代码注释部分)。然后我将面板添加到一个框架。这种方法奏效,它显示了JFrame中的按钮。

  2. 创建BorderLayout,使用addLayoutComponents()方法添加按钮。然后将此blBorderLayout参考)添加到面板,然后添加JFrame。 这种方法为什么不在框架中显示按钮?我哪里做错了?

任何人都可以帮助我学习AWT组件吗?我的意思是先阅读什么和概念的顺序。

jf = new JFrame(); 
jp= new JPanel(new BorderLayout()); 

/*jp.add(new JButton("North"), BorderLayout.NORTH); 
jp.add(new JButton("South"), BorderLayout.SOUTH); 
jp.add(new JButton("East"), BorderLayout.EAST); 
jp.add(new JButton("West"), BorderLayout.WEST); 
jp.add(new JButton("Center"), BorderLayout.CENTER); 
jf.add(jp); 
*/ 

BorderLayout bl = new BorderLayout(); 

bl.addLayoutComponent(new JButton("North"), BorderLayout.NORTH); 
bl.addLayoutComponent(new JButton("South"), BorderLayout.SOUTH); 
bl.addLayoutComponent(new JButton("East"), BorderLayout.EAST); 
bl.addLayoutComponent(new JButton("West"), BorderLayout.WEST); 
bl.addLayoutComponent(new JButton("Center"), BorderLayout.CENTER); 
jp.setLayout(bl); 
jf.add(jp); 
+0

*“任何人都可以帮助我学习AWT **组件**吗?”*尽管AWT对于布局,颜色和字体等功能仍然有用,但只需保留基于AWT的组件。它们已经完全被(更好的)Swing等价物取代。或者当我把它放在我的一个普通的复制/粘贴评论中:为什么要使用AWT?看到[这个答案](http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978)有很多很好的理由放弃AWT组件,以支持Swing。 –

回答

3

第二种方法不工作,因为它是错误的。您不应直接将组件直接添加到布局管理器,而是添加到使用布局管理器的容器中,这在布局管理器教程中有详细说明:Layout Manager Tutorial。根据BorderLayout API,编码人员不应直接调用addLayoutComponent方法,而是在将组件添加到容器时由容器本身间接调用它。该方法将组件添加到版面,但不添加到容器本身,这是一个关键区别。

+0

感谢气垫船充满了鳗鱼。但addLayoutComponent的目的是什么?如果这不应该由编码器明确使用。 –

+0

同样,它被分配了布局管理器的容器使用。由于它被外部类使用,它必须是公开的。但是,教程再次解释如何使用布局,为什么不从那里开始? –

相关问题