JLabel setLocation 不起作用?

2022-01-24 00:00:00 java swing jlabel jframe

这是我写的代码:

super("Add contact");

setLayout(new FlowLayout());
IPAddress = new JLabel("IP Address");
IPAddress.setLocation(1000, 100);

ImageIcon ii=new ImageIcon(getClass().getResource("Add.png"));
JLabel image = new JLabel(ii);
image.setSize(100, 100);
image.setLocation(500, 100);
add(image);
add(IPAddress);
setSize(500,150);
}

推荐答案

没错.布局管理器负责根据布局管理器的规则设置组件的位置.因此,在您的情况下,FlowLayout 将覆盖组件的位置.

That is correct. The layout manager is responsible for setting the location of a component based on the rules of the layout manager. So in your case the FlowLayout will override the location of the component.

您不应该对组件的位置进行硬编码.如果有人使用小于 1024 X 768 的分辨率怎么办?该组件永远不会显示.

You should never hardcode the location of a component. What if somebody is using resolution less then 1024 X 768? The component will never show.

您也不应该设置组件的大小.每个组件都有一个首选尺寸.在带有图像的标签的情况下,首选大小将是图像的大小.

You should also never set the size of a component. Every component has a preferred size. In the case of label with the image, the preferred size will be the size of the image.

阅读布局管理器并使用适当的布局管理器或布局组合经理来实现您想要的布局.

Read up on Layout Managers and use the appropriate layout manager or combination of layout managers to achieve your desired layout.

相关文章