JButton Ausbau gesamte Rahmen nehmen / Behälter
-
10-07-2019 - |
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?
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);
}
}