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の場所を設定するのに役立ちます。
GraphicsEnvironment.getCenterPoint()を呼び出すことにより、画面の中心点を取得できます。
于 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 に答える