我试图在jpanel上的特定x和y坐标处放置一系列jlabel(并设置其高度和宽度)。不管我怎么做,每个标签都会立即挂在前一个标签的右边,并且与其他标签的大小完全相同。
现在,我的jpanel在一个网格布局中。我尝试过绝对布局(非法参数异常结果)、自由设计(没有标 checkout 现)、流布局(所有内容都被压缩到中心)和其他一些。
我不知道我需要做什么才能让这件事成功。有人能帮忙吗?谢谢!
JLabel lbl1 = new JLabel("label 1");
JLabel lbl2 = new JLabel("label 2");
JLabel lbl3 = new JLabel("label 3");
JLabel lbl4 = new JLabel("label 4");
JLabel lbl5 = new JLabel("label 5");
myPanel.add(lbl1);
myPanel.add(lbl2);
myPanel.add(lbl3);
myPanel.add(lbl4);
myPanel.add(lbl5);
lbl1.setLocation(27, 20);
lbl2.setLocation(123, 20);
lbl3.setLocation(273, 20);
lbl4.setLocation(363, 20);
lbl5.setLocation(453, 20);
lbl1.setSize(86, 14);
lbl2.setSize(140, 14);
lbl3.setSize(80, 14);
lbl4.setSize(80, 14);
lbl5.setSize(130, 14);
6条答案
按热度按时间iqih9akk1#
通过调用
setLayout(null)
.调用组件类的
setbounds
方法。调用组件类的重绘方法。
注:
如果调整包含容器的窗口的大小,则使用绝对定位的容器创建容器可能会导致问题。
请参阅此链接:http://docs.oracle.com/javase/tutorial/uiswing/layout/none.html
jckbn6z72#
必须将容器的布局设置为空:
不过,最好还是看看马蒂斯布局管理器,我猜它现在被称为grouplayout。绝对定位的主要问题是当窗口改变大小时会发生什么。
umuewwlo3#
e5nqia274#
您可以使用自己的方法,通过setsize、setlocation值直接调用….!`我也教你如何使用jprogress吧
2mbi3lxu5#
我的建议是在gui编辑器中使用像netbeans这样的ide。检查代码,因为有很多方法:
设置布局管理器,或者对于绝对定位,使用mypanel.setlayout(null)有几个影响。
通常,假设您在jframe的构造函数中进行调用,您可以调用
pack()
开始布局。然后,每个布局管理器都使用自己的
add(Component)
或者add(Component, Constraint)
. borderlayout的用法与add(label、borderlayout.center)等一起使用。puruo6ea6#
布局管理器用于自动确定容器中组件的布局。如果要将零部件放置在特定的坐标位置,则根本不应使用布局管理器。
或