JPanel按钮不在正确的位置

问题描述 投票:0回答:2

我为桌面应用程序制作了一个自定义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);
java swing layout layout-manager
2个回答
1
投票

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

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

一般来说,setLocation倾向于与布局管理器作斗争,所以你通常不想使用它,除非你要手动定位所有东西。


1
投票

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

那么这可能需要的是使用FlowLayout作为对齐的FlowLayout.LEADING

但作为一般提示:

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