gpt4 book ai didi

java - 不可调整大小的 JFrame 更改 pack() 上的位置

转载 作者:行者123 更新时间:2023-12-01 18:27:42 24 4
gpt4 key购买 nike

我想写一个JFrame,它的内容可以改变大小。 JFrame 应根据其内容的大小进行调整。此外,JFrame 不应调整大小。

这是我的代码:

public class MyFrame {
public static void main(String[] args) {
new MyFrame();
}

private JFrame frame;
private JLabel label;
private boolean labelVisible = false;

public MyFrame() {
label = new JLabel("label");

frame = new JFrame();
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new GridLayout(0, 1, 5, 5));
frame.getContentPane().add(createButton());
frame.pack();
frame.setVisible(true);
}

private JButton createButton() {
JButton button = new JButton("toggleLabel");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (labelVisible) {
frame.getContentPane().remove(label);
} else {
frame.getContentPane().add(label);
}
labelVisible = !labelVisible;
frame.pack();
System.out.println(frame.getLocation());
}
});
return button;
}
}

问题是:如果我调整 JFrame 的大小(通过添加或删除标签),JFrame 会更改其位置(它向下移动一点)。但是,如果我删除 frame.setResizable(false) 行,JFrame 的位置将不再更改。

我能做点什么吗?我可以有一个不能由用户调整大小但由代码调整大小的 JFrame 吗?

<小时/>

编辑:

这是多次单击按钮后的输出:

java.awt.Point[x=75,y=62]
java.awt.Point[x=75,y=90]
java.awt.Point[x=75,y=118]
java.awt.Point[x=75,y=146]
java.awt.Point[x=75,y=174]
java.awt.Point[x=75,y=202]
java.awt.Point[x=75,y=230]
java.awt.Point[x=75,y=286]
java.awt.Point[x=75,y=286]
java.awt.Point[x=75,y=314]
java.awt.Point[x=75,y=342]

如您所见,y 坐标随着每次点击而增加。

<小时/>

编辑2:

正如 @camickr 在评论中指出的那样,这似乎是一个特定于平台的问题。

我使用 Ubuntu 14.04 64 位和 java-7-oracle 64 位 (1.7.0_67)。

最佳答案

我使用完全相同的代码,输出如下:

java.awt.Point[x=894,y=493]
java.awt.Point[x=894,y=493]
java.awt.Point[x=894,y=493]
java.awt.Point[x=894,y=493]
java.awt.Point[x=894,y=493]
java.awt.Point[x=894,y=493]
java.awt.Point[x=894,y=493]
java.awt.Point[x=894,y=493]
java.awt.Point[x=894,y=493]

这可能是与平台相关的问题...

关于java - 不可调整大小的 JFrame 更改 pack() 上的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25475972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com