gpt4 book ai didi

java - 不可调整大小的窗口边框和定位

转载 作者:可可西里 更新时间:2023-11-01 13:04:45 24 4
gpt4 key购买 nike

如果我创建不可调整大小的 JFrames,并且启用了 Windows Aero,setLocation 似乎没有正确考虑窗口边框。

在下面的代码中,我希望第二帧位于第一帧的右侧,而不是边框​​重叠。如果 Aero 被禁用或者如果我删除了对 setResizable 的调用,这将按预期完成。

import java.awt.Rectangle;
import javax.swing.JFrame;
public class FrameBorders {
public static void main(String[] args) {
JFrame frame1 = new JFrame("frame 1");
JFrame frame2 = new JFrame("frame 2");

frame1.setResizable(false);
frame2.setResizable(false);

frame1.setVisible(true);
Rectangle bounds = frame1.getBounds();
frame2.setLocation(bounds.x+bounds.width, bounds.y);
frame2.setVisible(true);

}
}

我做错了什么还是这是一个错误?如何在没有重叠边框的情况下并排显示 2 个不可调整大小的对话框?

编辑:添加了屏幕截图(还将 frame2 更改为 JDialog 而不是 JFrame)

气动开启: Aero On

气动关闭: Aero Off

Aero 开启但可调整大小: Aero On but resizable

最佳答案

What are the problems with settings bounds on non-resizable containers?

假设您调整边界以在您的平台上看起来不错。假设用户的平台有不同的字体,比如说更大的 FontMetrics。这个例子有点做作,但你明白了。如果您更改不可调整大小的容器的边界,请确保无论主机平台的默认字体如何,任何文本都是可见的。

image

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

/**
* @see http://stackoverflow.com/a/12532237/230513
*/
public class Evil extends JPanel {

private static final String s =
"Tomorrow's winning lottery numbers: 42, ";
private JLabel label = new JLabel(s + "3, 1, 4, 1, 5, 9", JLabel.LEFT);

public Evil() {
this.add(label);
}

private void display() {
JFrame f = new JFrame("Evil");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this, BorderLayout.WEST);
f.pack();
int w = SwingUtilities.computeStringWidth(
label.getFontMetrics(label.getFont()), s);
int h = f.getHeight();
f.setSize(w, h);
f.setResizable(false);
f.setLocationRelativeTo(null);
f.setVisible(true);
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
new Evil().display();
}
});
}
}

关于java - 不可调整大小的窗口边框和定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12529200/

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