2012-04-05 58 views
0

现在我有一个名为panel1的面板,我想在panel1上放置一个按钮,并将该按钮的位置设置为(30,30)。我怎样才能做到这一点?如何设置按钮的相对位置?

我尝试这样做,但目前看来,这是不正确的做法:(

 int x = panel1.getX(); 
    int y = panel2.getY(); 
    button.setLocation(x+30,y+30); 

非常感谢,布局管理器似乎是一个不错的选择,但这里是我的问题,我需要生成很多按钮在面板上动态显示,按钮大小也不同,那么我应该使用哪个布局管理器?根据教程,似乎没有这样的布局管理器....关键问题是我不想要(20,20)尺寸为15的按钮1和尺寸为20的(40,70)尺寸的按钮2,尺寸为5的(150,40)处的按钮3 .... 。

+5

人们会告诉你使用null布局,但我会说,不,不要这样做。最好的答案是让布局经理为你定位。通过学习涵盖此主题的教程,您可以获得很多收获,您可以在这里找到:[在容器中放置组件](http://docs.oracle.com/javase/tutorial/uiswing/layout/)。 – 2012-04-05 00:43:39

+2

另外,如果你想给你的JPanel一个30点大小的边框,在这个边框里不能添加组件,可以考虑给JPanel一个'EmptyBorder(30,30,30,30)'。 – 2012-04-05 01:03:05

+0

当你使用'null'布局时,你必须关心一切。它会导致更多的问题,而不是解决问题。例如,您的应用程序在不同的'LnF'和'Operating System'上会有不同的外观。而且在绝对定位中,你必须使用'button.setSize(50,30);'或者'setLocation(...)和setSize(...)'的另一个好的选择就是使用[setBounds(..) 。)](http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#setBounds(int,int,int,int)) – 2012-04-05 05:04:36

回答