java - 将单独的组件锚定在 JFrame 中

标签 java swing resize jframe layout-manager

我的 JFrame 中有一个 JLabel,最初使用 pack() 显示。

我的问题是,每当我尝试调整窗口大小时,JLabel 也会移动(取决于调整窗口的哪一侧大小),这主要是由于 JFrame 的布局所致。

更具体地说,每当我向上/向下调整窗口大小时,JLabel 都会保持居中。我希望情况并非如此。

如果我的问题令人困惑,我很抱歉。如果需要,我很乐意提供图表。

public class JavaApplication8 {

    public static void main(String[] args) throws MalformedURLException {
        // TODO code application logic here

        JFrame window = new JFrame("test");

        URL bgURL = new URL("https://si0.twimg.com/profile_images/3585146044/3b695fa73490227f792fa4e46d4a7a57.jpeg");
        ImageIcon bg = new ImageIcon(bgURL);

        JLabel label = new JLabel(bg);

        window.add(label, BorderLayout.CENTER);

        window.pack();
        window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        window.setLocationRelativeTo(null);
        window.setVisible(true);

    }   
}

最佳答案

使用不同的布局管理器:

window.setLayout(new FlowLayout());

对于这个例子来说就足够了。

如果您想继续使用 BorderLayout,另一种可能性是将标签放置到不同的位置:

window.add(label, BorderLayout.NORTH);

另请注意,您应该仅从 event dispatch thread 访问 swing 组件.

关于java - 将单独的组件锚定在 JFrame 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18399857/

相关文章:

java - 自定义矩形类不起作用

java - 更新 JFrame 以显示动画。游戏用

java - JPanel 在没有 GridLayout 的情况下组织按钮/图像/等

java - 保证线程执行顺序是先到先得

java - 在 Eclipse 中打开 Maven POM 文件依赖层次结构时出错 - "Project read error"

java - 尝试在 2D 数组中找到最近的可用点

java - 无法在 Java 中为 JPanel 设置颜色

java - 如何随着窗口大小的调整而调整 JLabel 中图像的大小?如何保持适当的规模?

flutter - 无法在 flutter 中更改按钮的高度

java - 如何调整 Barbecue API 生成的文本的大小?