我为桌面应用程序制作了一个自定义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);
答案 0 :(得分:1)
您在框架中使用BorderLayout
。您可以在面板中执行相同的操作。
pa.setLayout(new BorderLayout());
pa.add(btn, BorderLayout.WEST);
一般情况下,setLocation
往往会对布局管理器进行打击,因此您通常不想使用它,除非您要手动定位所有内容。
答案 1 :(得分:1)
这是一种方法,但
BorderLayout
方式并不是很好的方式,因为我还想在它旁边添加另一个按钮。
然后可能需要FlowLayout
使用FlowLayout.LEADING
作为对齐方式。
但作为一般提示: