Question

Salut tout le monde. J'essaie de créer une interface graphique swing avec un bouton et une étiquette. im utilisant une disposition de bordure et l’étiquette (dans le champ nord) s’affiche correctement, mais le bouton occupe le reste de l’image (elle est dans le champ central). aucune idée de comment résoudre ce problème?

Était-ce utile?

La solution

Vous devez ajouter le bouton à un autre panneau, puis l'ajouter au cadre.

Il s'avère que BorderLayout étend le composant jamais situé au milieu

Votre code devrait ressembler à ceci maintenant:

Avant

public static void main( String [] args ) {
    JLabel label = new JLabel("Some info");
    JButton button = new JButton("Ok");

    JFrame frame = ... 

    frame.add( label, BorderLayout.NORTH );
    frame.add( button , BorderLayout.CENTER );
    ....

}

Modifiez-le comme suit:

public static void main( String [] args ) {
    JLabel label = new JLabel("Some info");
    JButton button = new JButton("Ok");
    JPanel panel = new JPanel();
     panel.add( button );

    JFrame frame = ... 

    frame.add( label, BorderLayout.NORTH );
    frame.add( panel , BorderLayout.CENTER);
    ....

}

Avant / Après

Avant http://img372.imageshack.us/img372/2860/beforedl1.png Après http://img508.imageshack.us/img508/341/aftergq7.png

Autres conseils

Ou utilisez simplement la disposition absolue. C'est sur la palette de présentations.

Ou l'activer avec:

frame = new JFrame();
... //your code here

// to set absolute layout.
frame.getContentPane().setLayout(null);

De cette façon, vous pouvez librement placer le contrôle où vous voulez.

Encore une fois:)


    import javax.swing.*;

    public class TestFrame extends JFrame {
        public TestFrame() {
            JLabel label = new JLabel("Some info");
            JButton button = new JButton("Ok");
            Box b = new Box(BoxLayout.Y_AXIS);
            b.add(label);
            b.add(button);
            getContentPane().add(b);

        }
        public static void main(String[] args) {
            JFrame f = new TestFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setLocationRelativeTo(null);
            f.setVisible(true);

        }
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top