在调用 setVisible(true) 之前将 JFrame N 像素(例如在 x 方向上 300 像素)放置在远离屏幕中心的代码是什么?
问问题
15775 次
4 回答
9
我通常会执行以下操作来使 JFrame 居中。您可以将偏移量添加到wdwLeft
变量中,如清单所示,以使框架偏离中心。(调用setPreferredSize()
是多余的,只是为了使这个演示工作。)
package testapplication;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;
import javax.swing.JFrame;
public class MyJFrame extends JFrame {
MyJFrame() {
super("Test");
Dimension screenSize = new Dimension(Toolkit.getDefaultToolkit().getScreenSize());
setPreferredSize(new Dimension(200, 200));
Dimension windowSize = new Dimension(getPreferredSize());
int wdwLeft = 300 + screenSize.width / 2 - windowSize.width / 2;
int wdwTop = screenSize.height / 2 - windowSize.height / 2;
pack();
setLocation(wdwLeft, wdwTop);
}
public static void main(final String [] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
final MyJFrame jf = new MyJFrame();
jf.setVisible(true);
}
}
);
}
}
您可以添加额外的逻辑来确保偏移窗口仍然完全在屏幕内,如getMaximumWindowBounds()
.
于 2009-11-06T14:59:19.267 回答
2
Frame Javadoc提供的一些信息可以帮助您在使用 setLocation() 方法调用 setVisible(true) 之前设置 JFrame 的位置
于 2009-11-06T13:56:55.180 回答
1
简单设置:
FormName.setLocation(X-Axis Coordinate, Y-Axis Coordinate);
于 2010-12-16T06:16:26.873 回答
0
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension windowSize = window.getSize();
int windowX = Math.max(0, (screenSize.width - windowSize.width ) / 2);
int windowY = Math.max(0, (screenSize.height - windowSize.height) / 2);
f.setLocation(windowX, windowY); // Don't use "f." inside constructor.
OR
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
f.setSize(screenSize.width - 4, screenSize.height - 4);
f.validate(); // Make sure layout is ok
于 2010-12-16T06:22:10.723 回答