На мой взгляд, графический интерфейс в центре экрана выглядит таким ... "splash-screen'ish". Я все жду, когда они исчезнут и появится настоящий графический интерфейс!
Начиная с 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();
}
});
}
}