Wenn ich Komponenten wie JButton
s auf der Ost- oder Westseite hinzufüge, wie verhindere ich, dass es die Seite des Bildschirms umklammert? Ich möchte etwas Platz zwischen dem JButton
s und dem Rand des Bildschirms.Java - Wie verhindere ich, dass BorderLayout EAST die Seite des Bildschirms berührt?
Antwort
Anruf setBorder
auf JButton wie folgt aus:
setBorder(new EmptyBorder(3, 3, 3, 3))
Vom JavaDoc, ist ein EmptyBorder eine „transparente Grenze, die Platz in Anspruch nimmt, aber führt keine Zeichnung“. In meinem Beispiel soll es 3 Pixel bzw. oben, links, unten und rechts nehmen.
komplette Code, dessen Zweck es ist, nur zu zeigen, wie EmptyBorder verwenden:
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.border.EmptyBorder;
public class ALineBorder {
public static void main(String args[]) {
JFrame frame = new JFrame("Line Borders");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button1 = new JButton("Button1");
button1.setBorder(new EmptyBorder(8, 8, 8, 8));
JButton button2 = new JButton("Button2");
JButton button3 = new JButton("Button3");
button3.setBorder(new EmptyBorder(16, 16, 16, 16));
Container contentPane = frame.getContentPane();
contentPane.add(button1, BorderLayout.WEST);
contentPane.add(button2, BorderLayout.CENTER);
contentPane.add(button3, BorderLayout.EAST);
frame.pack();
frame.setSize(300, frame.getHeight());
frame.setVisible(true);
}
}
Wahrscheinlich haben Sie (oder bald haben) mehr als eine Taste in dem Behälter, und wollen, dass sie horizontal auszurichten. So betrachten innerhalb der Tasten setzen in einer verschachtelten JPanel
mit einem GridBagLayout
:
class ButtonPanel extends JPanel {
ButtonPanel() {
setLayout(new GridBagLayout());
}
@Override
public Component add(Component button) {
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridy = nextGridY++;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(3, 3, 3, 3);
super.add(button, gbc);
return button;
}
int nextGridY;
}
Dann diese Platte mit dem Rahmen oder Platte Mutter hinzufügen
Border geht, wie der Name an der Grenze sagt (mit BorderLayout
.) . Sie können jedoch Dinge darin verschachteln, so dass Sie ein JPanel mit einem Rahmen einfügen können und dann Ihren Button darin einfügen.
Sie können auch mit dem GUI-Designer in Netbeans experimentieren. Es ist wirklich sehr nett und gibt eine Menge Hilfe zu Dingen, die Sie normalerweise tun möchten (wie einen Rand zur Grenze haben, usw.).
- 1. Java BorderLayout stretch east
- 2. Wie verhindere ich, dass JQM eine Seite formatiert?
- 3. Wie verhindere ich, dass Chrome Eingabefelder vorfüllt?
- 4. Wie verhindere ich, dass Browser Cookies speichern?
- 5. Wie verhindere ich, dass Button Surround in Java angezeigt wird?
- 6. Wie verhindere ich, dass Hibernate Zeichenfolgen schneidet?
- 7. Wie verhindere ich, dass IIS Websites kompiliert?
- 8. iPad Landschaft Probleme erkennen berührt auf der linken Seite des Bildschirms
- 9. Wie verhindere ich, dass mein Schreiber die Datei überschreibt?
- 10. Wie verhindere ich, dass die jquery-Benutzeroberfläche Stile automatisch hinzufügt?
- 11. Wie verhindere ich, dass FormView die eingegebenen Werte des Benutzers löscht, nachdem die Einfügemethode ausgelöst wurde?
- 12. Wie verhindere ich, dass IVsBuildPropertyStorage.SetItemAttribute Sonderzeichen löscht?
- 13. Wie verhindere ich, dass Passwörter gespeichert werden?
- 14. Wie verhindere ich eine leere letzte Seite?
- 15. Wie verhindere ich, dass der MongoDB-Replikatsatz die Primärdatenbank abfragt?
- 16. Java-Schwingen; Wie mache ich es so, dass das Programm auf der rechten Seite des Bildschirms startet?
- 17. Wie verhindere ich, dass WIX CAQuietExec die Befehlszeile protokolliert?
- 18. Wie verhindere ich, dass die ListView-Fußzeile ausgewählt wird?
- 19. Wie verhindere ich, dass mein Apache2-Server die missile_launch_codes.ini ausliefert?
- 20. Wie verhindere ich, dass meine HTML-Schaltfläche die gesamte Seite aktualisiert?
- 21. Wie verhindere ich, dass die standardmäßige main.css-Datei von Grails auf einer bestimmten Seite verlinkt wird?
- 22. Wie verhindere ich, dass der Übergang mit maximaler Höhe die Seite nach oben scrollt?
- 23. Wie verhindere ich das Scrollen des Bildschirms beim Ziehen mit der Maus, wenn sich ein absolut positioniertes Element (teilweise) außerhalb des Bildschirms befindet?
- 24. Wie fixiere ich den Cursor in der Mitte des Bildschirms in Emacs, so dass die Seite bewegt, nicht der Cursor?
- 25. Wie bekomme ich die nutzbaren Koordinaten des Bildschirms in Delphi
- 26. Wie mache ich JTextField erweitern mit einem BorderLayout (Java)
- 27. Wie verhindere ich die Verwendung des falschen Typs in PHP?
- 28. den Rand des Bildschirms in Java reservieren
- 29. Wie verhindere ich, dass sich meine div-Ebenen überlappen, wenn die Größe des Browsers geändert wird?
- 30. Wie verhindere ich, dass die App beim Schließen des Startformulars beendet wird?
+1: 'setBorder' ist der richtige Weg, aber setze es auf deinen' JPanel'. Ansonsten müssten Sie für jede Schaltfläche einstellen. –
yup ... In dem Beispiel, das ich hinzugefügt habe, habe ich einen anderen Rand auf zwei Buttons gelegt, nur um das Verhalten zu zeigen. Aber Peter hat Recht. – SyntaxT3rr0r
Das explizite Festlegen eines leeren Rands auf einer Schaltfläche ändert auch die Größe und das Innenlayout der Schaltfläche (zumindest bei Vista mit System und Metalloptik). Ich möchte es definitiv auf ein containing Panel setzen. – Ash