JPanel按钮不在正确的位置

时间:2017-12-31 06:10:38

标签: java swing layout layout-manager

我为桌面应用程序制作了一个自定义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);

2 个答案:

答案 0 :(得分:1)

您在框架中使用BorderLayout。您可以在面板中执行相同的操作。

pa.setLayout(new BorderLayout());
pa.add(btn, BorderLayout.WEST);

一般情况下,setLocation往往会对布局管理器进行打击,因此您通常不想使用它,除非您要手动定位所有内容

答案 1 :(得分:1)

  

这是一种方法,但BorderLayout方式并不是很好的方式,因为我还想在它旁边添加另一个按钮。

然后可能需要FlowLayout使用FlowLayout.LEADING作为对齐方式。

但作为一般提示:

  1. 以最小尺寸提供ASCII艺术或GUI的预期布局的简单绘图(显示所有组件),如果可调整大小,具有更多宽度和高度 - 显示应该如何使用额外的空间。
  2. 为了更好地提供帮助,请发布 Minimal, Complete, and Verifiable exampleShort, Self Contained, Correct Example您的尝试。