Ответ 1
На мой взгляд, графический интерфейс в середине экрана выглядит так... "splash-screen'ish". Я продолжаю ждать, пока они исчезнут, и появится реальный GUI!
Так как Java 1.5 у нас есть доступ к Window.setLocationByPlatform(boolean)
. который..
Устанавливает, должно ли это окно отображаться в местоположении по умолчанию для собственной системы окон или в текущем местоположении (возвращенном getLocation), когда следующий раз окно станет видимым. Это поведение похоже на собственное окно, показанное без программной настройки его местоположения. Большинство оконных систем каскадных окон, если их местоположения явно не установлены. Фактическое местоположение определяется после отображения окна на экране.
Посмотрите на эффект этого примера, который помещает 3 графических интерфейса в позиции по умолчанию, выбранные ОС - в Windows 7, Linux с Gnome и Mac OS X.
(3 лота) 3 GUIs аккуратно сложены. Это представляет собой "путь наименьшего удивления" для конечного пользователя, так как OS может размещать 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();
}
});
}
}