JButton上的setLocation似乎没有按预期工作

时间:2015-06-11 11:44:23

标签: java swing position jbutton layout-manager

这是我的缩短版代码:

JPanel card1 = new JPanel();

JLabel switch1 = new JLabel(new ImageIcon("switch1.jpg"));
switch1.setLocation(TOPSWITCH, LEFTSWITCH1);
JLabel switch2 = new JLabel(new ImageIcon("switch1.jpg"));
switch2.setLocation(TOPSWITCH, LEFTSWITCH2);
JLabel switch3 = new JLabel(new ImageIcon("switch1.jpg"));
switch3.setLocation(TOPSWITCH, LEFTSWITCH3);

card1.add(switch1);
card1.add(switch2);
card1.add(switch3);

card1.setBackground(Color.BLACK);

/* JButton goToRoom = new JButton("TEST");

goToRoom.setLocation(180, 270);

card1.add(goToRoom); */

card1已添加到使用my_frame.setSize(400, 300);确定大小的JFrame。

上面的代码按预期工作。但是当我取消评论评论时,JButton出现在图像的右侧(JLabel s),而不是出现在图像下方。可能是什么问题?

其他信息:

final static int TOPSWITCH   = 150;

final static int LEFTSWITCH1 = 65 ;
final static int LEFTSWITCH2 = 155;
final static int LEFTSWITCH3 = 245;

switch1.jpg的尺寸为91 x 150

注意:我想在不添加更多JPanels的情况下执行此操作。

1 个答案:

答案 0 :(得分:2)

  

可能是什么问题?

  1. 想要设置明确的位置。
  2. 战斗布局管理器。
  3. Java GUI必须使用不同语言环境中的不同PLF,处理不同的操作系统,屏幕大小,屏幕分辨率等。因此,它们不利于像素完美布局。而是使用布局管理器,或combinations of them以及white space的布局填充和边框。