Frage

Hey everyone. Ich versuche, einen Swing-GUI mit einem Knopf und ein Etikett auf sich zu machen. im mit einem Rahmen-Layout und das Etikett (im Nordfeld) zeigt in Ordnung, aber die Taste führt den Rest des Rahmens (es ist in der Mitte Feld). eine Idee, wie dieses Problem beheben?

War es hilfreich?

Lösung

Sie haben die Taste auf eine andere Platte, hinzuzufügen und dann die Platte mit dem Rahmen hinzuzufügen.

Es stellt sich heraus das Border erweitert, was immer Komponente in der Mitte

Der Code sollte wie folgt aussehen jetzt:

Vor

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 );
    ....

}

Ändern Sie es so etwas wie folgt aus:

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);
    ....

}

Vorher / Nachher

Bevor http://img372.imageshack.us/img372/2860/beforedl1.png Nach http://img508.imageshack.us/img508/341/aftergq7.png

Andere Tipps

Oder benutzen Sie einfach Absolutes Layout. Es ist auf dem Layout Pallet.

oder aktivieren Sie es mit:

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

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

Auf diese Weise können Sie frei die Kontrolle, wohin Sie wollen.

Auch hier:)


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

        }
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top