在调用setVisible(true)之前,将JFrame N像素(比如x方向300像素)远离屏幕中心定位的代码是什么?
答案 0 :(得分:8)
我通常会执行以下操作来使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()
确定的屏幕内。
答案 1 :(得分:2)
Frame Javadoc提供的一些信息可以帮助您在使用setLocation()方法调用setVisible(true)之前设置JFrame的位置
获取屏幕的中心点答案 2 :(得分:1)
简单设置:
FormName.setLocation(X-Axis Coordinate, Y-Axis Coordinate);
答案 3 :(得分: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