Java: Swing: Legen Sie die position der JButton
Wollte ich realisieren, das folgende layout:
--------------------------------------------
| |
| |
| |
| |
| |
| ---------- |
| | OK | |
| ---------- |
| |
--------------------------------------------
Ich wollte, um die Größe der Schaltfläche und es soll zentriert sein in der souther position des JFrame, aber es sollte nicht die volle Breite des JFrame und es shouln ' T werden völlig an der Unterseite des JFrame, es sollte eine "Marge".
Es wäre auch möglich, eine absolute pixel-position der Taste, weil das JFrame hat eine Feste Breite/Höhe. Im moment hat die Taste die volle JFrame Breite/Höhe.
Bitte beachten Sie, dass der JFrame hat ein Hintergrundbild.
Mein Code:
JFrame j = new JFrame("Foobar");
BufferedImage myImage = null;
try {
myImage = ImageIO.read(new File("background.png"));
} catch (Exception ex) {}
JPanel p = new ImagePanel(myImage);
p.setLayout(new BorderLayout());
JButton button = new JButton("OK");
button.setSize(80, 200);
button.setFont(new Font("Arial", 1, 40));
p.add(button);
f.add(p);
class ImagePanel extends JPanel {
private Image image;
public ImagePanel(Image image) {
this.image = image;
}
@Override
protected void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, null);
}
}
benutze netbeans (drag & drop)
InformationsquelleAutor Poru | 2010-12-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Kombination von einfachen layout-Manager sollten den trick tun. Zum Beispiel die Haupt-JPanel könnte eine EmptyBorder, wo Sie fügen Sie entsprechende Margen und konnte mit BorderLayout. Dann fügen Sie eine southPanel JPanel verwendet FlowLayout FlowLayout angeordnet.MITTE (Standard), und man könnte hinzufügen, Ihre JButton dieser southPanel. Vergessen Sie nicht, rufen Sie pack und stellen Sie sicher, dass alle JPanels aufrufen setOpaque(false). Zum Beispiel:
InformationsquelleAutor Hovercraft Full Of Eels
Swing bietet viele "einfachen" layouts, die, wenn miteinander kombiniert, können sich die meisten layouts kann man im Kopf haben. Aber manchmal ist es einfacher, Ihre eigenen Layouts. In Ihrem spezifischen Fall haben, das ist, was ich empfehlen würde.
Hier ist der Teil der Swing-tutorial, die Sie Folgen können : http://download.oracle.com/javase/tutorial/uiswing/layout/custom.html
Wenn Sie wirklich wollen, dies zu tun durch die Kombination von standard-layouts, dann können Sie versuchen, diese :
BorderLayout
SOUTH
Teil des Haupt-panelFlowLayout
EmptyBorder
zu diesem panel, und setzen Sie den unteren Wert (dies ist Ihre Marge)Alternativ können Sie die Grenze zu Ihrem Haupt-Bedienfeld. Es hängt davon ab, wie Sie wollen, dass die anderen Komponenten des Haupt-panel angelegt werden.
InformationsquelleAutor barjak
InformationsquelleAutor Ewen
Wenn Sie Häufig die Lösung dieser Art von layout-Probleme, dann würde ich dringend empfehlen das herunterladen und die Schiefen MiGLayout - es ist im Grunde eine layout-manager auf Steroiden, der kann so ziemlich jedes layout, das Sie sich vorstellen können.
Es braucht ein wenig Zeit, um herauszufinden, wie es zu benutzen, aber wenn man einmal die Prinzipien, es ist ein fantastisches Werkzeug, um in Ihrem Arsenal.
InformationsquelleAutor mikera
Versuchen Sie es mit GridBagLayout, bietet es die Freiheit, die Sie wollen, aber es ist ein bisschen schwer zu lernen. Aber es kann auf jeden Fall das tun, was Sie erwarten, zu tun.
InformationsquelleAutor João Silvestre