Hey alle. Ich versuche, eine Swing-GUI mit einem Button und einem Label zu erstellen. Ich benutze ein Rahmenlayout und die Beschriftung (im Feld Norden) erscheint gut, aber die Schaltfläche nimmt den Rest des Rahmens (es ist in der Mitte Feld). eine Idee, wie das zu beheben?JButton erweitert, um den gesamten Rahmen/Container aufzunehmen
6
A
Antwort
9
Sie müssen die Schaltfläche zu einem anderen Panel hinzufügen und dieses Panel dann dem Rahmen hinzufügen.
Es stellt sich heraus die Border was auch immer Komponente erweitert in der Mitte wie diese
Ihr Code sollte nun so aussehen:
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 es so etwas wie dieses:
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
Before http://img372.imageshack.us/img372/2860/beforedl1.png After http://img508.imageshack.us/img508/341/aftergq7.png
0
Wieder :)
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);
}
}
2
Oder benutzen Sie einfach Absolute Layout. Es ist auf der Layoutpalette.
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 platzieren überall Sie mögen.
Verwandte Themen
- 1. Legen Sie PhantomJS fest, um den gesamten Bildschirm nach der Verwendung von clipRect() aufzunehmen.
- 2. Excel - Zeilenmakro einfügen, um Tabellenformat aufzunehmen
- 3. Making Text Block erweitert, um den restlichen Bereich zu füllen
- 4. Wie bekomme ich ELMAH um Sitzungswerte aufzunehmen?
- 5. Div, um die gesamte verbleibende Breite aufzunehmen
- 6. JButton berechnet den eingegebenen Wert nicht (Java)
- 7. definiert Makro erweitert, um wörtliche #
- 8. Untergeordnetes Formular, um den gesamten Kundenbereich zu verwenden?
- 9. Regex, um den gesamten Text außerhalb der Klammern zu erhalten
- 10. Neo4j Cypher-Abfrage, um den gesamten Graphen anzuzeigen, einschließlich Beziehungseigenschaften?
- 11. Animieren der Höhe eines Divs, um den gesamten Inhalt anzuzeigen
- 12. Erweitert eine Klasse, die den Hadoop-Mapper erweitert
- 13. Codeigniter erweitert erweitert MY_Controller
- 14. JButton Hintergrundbild
- 15. Symbolleiste füllt den gesamten Bildschirm
- 16. Cassandra frisst den gesamten Speicherplatz
- 17. JButton Frage
- 18. JButton floating
- 19. Ausrichten JButton
- 20. jQuery qtip: Ändern Sie Hover, um Link in Tooltip aufzunehmen?
- 21. JButton Unterklasse nicht ändern Transparenz
- 22. Erweitern Sie Text-Widget, um den gesamten übergeordneten Frame in Tkinter zu füllen
- 23. Einstellen eines Protokolldateinamens, um das aktuelle Datum in Log4j aufzunehmen
- 24. Django ALLOWED_HOSTS: OK, um "localhost" in eine bereitgestellte Einstellungsdatei aufzunehmen?
- 25. erweitert Modell == erweitert eloquent?
- 26. Ist es möglich, Montageanweisungen in den CUDA-Code aufzunehmen?
- 27. Wie bekomme ich sbt, um in groovy geschriebene Tests aufzunehmen?
- 28. Ist es möglich, den Ton aufzunehmen, der vom iPhone kommt?
- 29. Pandas - Gruppe durch den gesamten MultiIndex
- 30. Rechtsklick auf JButton
Was ist der Standard Layout Manager auf dem Panel dann? FlowLayout? –
FlowLayout, das ist richtig. – OscarRyz