Java: JButton Erweitern, um füllen Sie den Behälter
Ich habe eine JButton
ich möchte zu erweitern, um die Größe einer JPanel
, dass es halten wird. Ich habe versucht, dies zu tun ein paar verschiedene Möglichkeiten, mit kein Glück. Hier einige versuche:
-
Manuelle Einstellung Größe als empfohlen hier - Größe des Buttons nicht ändern.
panel = new JPanel(new CardLayout()); button = new JButton(); button.setPreferredSize(new Dimension(BUTTON_SIZE, BUTTON_SIZE)); panel.add(button);
-
Versucht, einen
BorderLayout
zu erweitern, die Taste, wie schon angedeutet,hier. Größe nicht ändern.panel = new JPanel(new BorderLayout()); button = new JButton(); panel.add(button, BorderLayout.CENTER);
Bin ich wohl dabei etwas falsch, so dass jede Hilfe wird sehr geschätzt.
BEARBEITEN
Hier ist eine Zusammenfassung von dem, was es behoben. Es gibt 2 Dinge, die gearbeitet
- Entfernen der LayoutManager (in dem Aufruf
new JPanel
), die nach Oracle standardmäßig BorderLayout. - Hinzufügen der Dimensionen auf den Anruf, wie in der akzeptierten Antwort (d.h.
new BorderLayout(0,0)
).
- Was wir wirklich brauchen, um zu sehen, ist, was Sie tun mit der Schaltfläche
panel
. Der zweite Versuch ist richtig in der Theorie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem zweiten Versuch sollte arbeiten, aber das bedeutet nicht, dass Ihre gesamte top-level-container wird gefüllt durch die
JPanel
enthältJButton
. Wenn es keine anderen Komponenten in einemBorderLayout
container, der center-Komponente wird zu erweitern, um den gesamten container.http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html
Können Sie post ein Bild von dem, was Sie sehen, wenn Sie führen Sie Ihre app? Hier ist ein funktionierendes Beispiel. Eine Sache, erwähnenswert ist, dass jeder container den ganzen Weg bis an die Spitze
JFrame
ist auch mitBorderLayout
. Es ist möglich, in Ihrem Versuch, dass einige upper-level-container ist die Beschränkung der Größe IhrerJPanel
, und daher auch dieJButton
im inneren.BorderLayout
ist die einfachste Lösung.Das problem, das Sie wahrscheinlich mit, wie die Eltern panel ist dann gelegt. Hinzufügen-Schaltfläche, um ein panel, das verwendet
BorderLayout
dann hinzufügen das panel auf einem panel verwendetFlowLayout
nicht in der Wirkung sind Sie nach.Scheint in Ordnung ist, wenn ich mit
BorderLayout
:Poste bitte ein SSCCE zu zeigen spezifische Probleme.