2010-01-11 74 views
1

如何在JFrame上指定组件(特定于JLabel)的位置?我创建了一个JFrame对象,并在框架中添加了一个JLabel和一个JList,但是两个对象都被放置在彼此之上。我一直在使用jframe组件布局

label.setBounds(10,10,10,10);
list.setBounds(20,20,100,100);

label.setLocation(10,10);
list.setLocation(10, 50);

的这些工作都没有尝试过。任何帮助表示赞赏!谢谢。

+0

你能提供你创建'JFrame','JLabel'和'JList'的代码吗? – 2010-01-11 17:23:27

回答

2

在Java中,布局管理器使用其确定的组件将被放置的方式。您可以找到有关布局管理器这里的更多信息:http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html

如果一定要使用的坐标把你的组件,你可以尝试:

JFrame frame = new JFrame(); 
frame.setLayout(null); 

否则,对于Java的一个非常不错的图形用户界面编辑器是NetBeans的哪个默认情况下使用GroupLayout。

+0

将布局管理器设置为空是在布置组件时使用绝对定位的首选方式。然而IMO,NetBeans的GUI编辑器是一个真正的痛苦,我发现它不容易使用它。 – ChadNC 2010-01-11 18:05:59

+0

NetBeans UI编辑器非常出色,现在是免费提供的最佳选择之一。了解不同LayoutManagers的工作方式可能很困难,但最终它将非常值得。 – willcodejavaforfood 2010-01-12 08:21:15

1

Layout Managers将为您做到这一点。

使用默认布局BorderLayout,尝试

setLayout(new BorderLayout()); 
getContentPane().add(yourLabel, BorderLayout.NORTH); 
getContentPane().add(yourList, BorderLayout.CENTER);