На мій погляд, графічний інтерфейс в середині екрану виглядає так .. "сплеск-екран". Я чекаю, коли вони зникнуть і з'явиться справжній графічний інтерфейс!
З Java 1.5 ми мали доступ до Window.setLocationByPlatform(boolean)
. котрий..
Встановлює, чи має це вікно відображатися у стандартному розташуванні для рідної системи вікон або у поточному місці (повертається getLocation) наступного разу, коли вікно стане видимим. Така поведінка нагадує рідне вікно, показане без програмного встановлення його місця розташування. Більшість систем вікон каскадують вікна, якщо їх місця не встановлені явно. Фактичне розташування визначається, коли вікно відображається на екрані.
Подивіться на ефект цього прикладу, який ставить 3 графічні інтерфейси у положення за замовчуванням, як вибрано ОС - у Windows 7, Linux та Gnome & Mac OS X.
(3 лоти) 3 графічні інтерфейси акуратно складені. Це означає "шлях найменшого сюрпризу" для кінцевого користувача, оскільки саме так ОС може розміщувати 3 екземпляри звичайного текстового редактора за замовчуванням (або що-небудь ще, з цього приводу). Дякую trashgod для Linux та Mac. образи.
Ось простий код, який використовується:
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();
}
});
}
}