我为桌面应用程序制作了一个自定义JFrame,我在应用程序的顶部添加了一个JPanel作为标题框的替代。问题是当我添加一个按钮时,它位于JPanel的中间,而不是通常的左上角。即使我将它设置在不同的位置也不会移动。这是代码:
JFrame f = new JFrame("Hello");
f.setResizable(true);
JPanel pa = new JPanel();
JButton btn = new JButton("Exit");
btn.setBackground(Color.white);
btn.setText("Button");
btn.setSize(300, 80);
btn.setLocation(50, 0);
pa.setBackground(Color.red);
pa.setPreferredSize(new Dimension(width,60));
pa.add(btn);
f.setBackground(Color.white);
f.setUndecorated(true);
f.getContentPane().add(pa, BorderLayout.NORTH);
f.setSize(new Dimension(width,height));
f.setLocation(200, 200);
f.setVisible(true);
你在框架中使用BorderLayout
。您可以在面板中执行相同的操作。
pa.setLayout(new BorderLayout());
pa.add(btn, BorderLayout.WEST);
一般来说,setLocation
倾向于与布局管理器作斗争,所以你通常不想使用它,除非你要手动定位所有东西。
这是一种方法,但
BorderLayout
方式不是很好的方式,因为我也想在它旁边添加另一个按钮。
那么这可能需要的是使用FlowLayout
作为对齐的FlowLayout.LEADING
。
但作为一般提示: