129 votes

Comment mieux positionner GUI Swing

Dans un autre thread , j’ai dit que j’ai aimé centrer ma GUI en faisant quelque chose comme ceci :

Mais Andrew Thompson avait une opinion différente, pour appeler à la place

et les esprits curieux veulent savoir pourquoi ?

171voto

Andrew Thompson Points 108505

À mes yeux, une interface graphique dans le milieu de l'écran a l'air tellement.. "splash-screen new'ish". J'attends toujours qu'elles disparaissent et le réel GUI apparaissent!

Depuis Java 1.5, nous avons eu accès à l' Window.setLocationByPlatform(boolean). qui..

Définit si cette Fenêtre devrait apparaître à l'emplacement par défaut pour le système de fenêtrage natif ou à l'emplacement actuel (retourné par la getLocation) la prochaine fois que la Fenêtre est visible. Ce comportement ressemble à une fenêtre native montré sans programme définissant son emplacement. La plupart des systèmes de fenêtrage cascade de windows si leurs emplacements ne sont pas explicitement définies. La position réelle est déterminée une fois que la fenêtre est affichée sur l'écran.

Jetez un oeil à l'effet de cet exemple qui met 3 Interfaces graphiques dans les positions par défaut choisi par le système d'exploitation - Windows 7, Linux avec Gnome Et Mac OS X.

Stacked windows on Windows 7enter image description hereStacked windows on Mac OS X

(3 lots) 3 Ihm soigneusement empilés. Cela représente 'le chemin de moindre surprise" pour l'utilisateur final, puisque c'est la façon dont le système d'exploitation de la position 3 instances de la valeur par défaut éditeur de texte (ou quoi que ce soit d'autre, d'ailleurs). Mes remerciements à trashgod pour Linux Et Mac. les images.

Voici le simple code utilisé:

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();
            }
        });
    }
}

0voto

Giorgio Desideri Points 107

Méthode `` est le meilleur pour une application gratuite.

Si vous voulez créer une application d’entreprise avec Swing GUI, vous pouvez préfèrent utiliser un gestionnaire de fenêtres pour la plate-forme Java. En effet, l’autorisation contrôle au système d’exploitation windows poste n’est pas le meilleur lorsque vous exécutez une application d’entreprise.

Vous voyez JavaFX ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X