私の目には、画面の中央にあるGUIは "splash-screen'ish"に見えます。それらが消えて本物の GUIが表示されるのを待ち続けます!
Java 1.5以降、にアクセスしてきましたWindow.setLocationByPlatform(boolean)
。どっち?
次回ウィンドウが表示されたときに、このウィンドウをネイティブウィンドウシステムのデフォルトの場所に表示するか、現在の場所(getLocationから返される)に表示するかを設定します。この動作は、プログラムで場所を設定せずに表示されるネイティブウィンドウに似ています。ほとんどのウィンドウシステムは、ウィンドウの場所が明示的に設定されていない場合、ウィンドウをカスケードします。ウィンドウが画面に表示されると、実際の場所が決定されます。
OSが選択したデフォルトの位置に3つのGUIを配置するこの例の効果を見てください-Windows 7では、GnomeとMac OS Xを搭載したLinux。
(3ロット)3つのGUIがきれいにスタックされています。これは、OSがデフォルトのプレーンテキストエディタ(またはそれ以外のことなら何でも)の3つのインスタンスを配置する方法であるため、エンドユーザーにとって「最も驚きの少ない道」を表しています。LinuxとMacのtrashgodに感謝します。画像。
使用されている簡単なコードは次のとおりです。
import javax.swing.*;
class WhereToPutTheGui {
public static void initGui() {
for (int ii=1; ii<4; ii++) {
JFrame f = new JFrame("Frame " + ii);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
String s =
"os.name: " + System.getProperty("os.name") +
"\nos.version: " + System.getProperty("os.version");
f.add(new JTextArea(s,3,28)); // suggest a size
f.pack();
// Let the OS handle the positioning!
f.setLocationByPlatform(true);
f.setVisible(true);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch (Exception useDefault) {}
initGui();
}
});
}
}