A meu ver, uma GUI no meio da tela parece tão .. "splash-screen'ish". Eu continuo esperando eles desaparecerem e o verdadeiro GUI apareça!
Desde o Java 1.5, tivemos acesso Window.setLocationByPlatform(boolean)
. qual..
Define se essa janela deve aparecer no local padrão para o sistema de janelas nativo ou no local atual (retornado por getLocation) na próxima vez que a janela for tornada visível. Esse comportamento se assemelha a uma janela nativa mostrada sem definir programaticamente sua localização. A maioria dos sistemas de janelas em cascata abre janelas se seus locais não estiverem explicitamente definidos. A localização real é determinada quando a janela é exibida na tela.
Veja o efeito deste exemplo que coloca 3 GUIs nas posições padrão, conforme escolhido pelo sistema operacional - no Windows 7, Linux com Gnome e Mac OS X.
(3 lotes) 3 GUIs ordenadamente empilhadas. Isso representa 'o caminho da menor surpresa' para o usuário final, pois é assim que o sistema operacional pode posicionar três instâncias do editor de texto sem formatação padrão (ou qualquer outra coisa, nesse caso). Meus agradecimentos ao trashgod pelo Linux e Mac. imagens.
Aqui está o código simples usado:
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();
}
});
}
}