Abstand zw. 2 JButton vergrößern

vfl_freak

Premium-User
Hallo zusammen,

habe mal eine kurze (Anfänger-)Frage:

Ich habe eine Bildschirmmaske, in der im unteren Panel fünf verschiedene JButton sind. Nun möchte ich den Abstand zwischen den dritten und vierten Button (beliebig) vergrößern .....

Gibt es hierzu eine Befehl oder einen simplen Trick?

Danke im voraus!

LG aus OS
Klaus

[EDIT]: im Zweifel würde es mir in diesem speziellen Fall auch reichen, einen leeren Button ohne Rahmen doch hinzulegen, aber wie bekomme ich den Rahmen weg ? ? ?
 
Zuletzt bearbeitet:
Hallo,

sowas regle ich immer über das Layout.
In der Regel verwende ich das TableLayout, damit kann man sowas schön regeln.
 
Hallo Matze,

Danke für Deine schnelle Antwort :)
Allerdings bin ich mir nicht sicher, ob ein TableLayout das ist, was suche!

Ich habe mir (mangels Erfahrung damit) eben mal ein paar Beispiele im Internet angeschaut. Wenn ich es richtig verstehe, kann damit sowas Ähnliches basteln, wie mit den Tabellenkonstrukten in HTML, oder ? ?

Ich habe hier folgenden Fall:
Java:
JPanel pnMain = new JPanel();
JPanel jPanel1 = new JPanel();
...
pnMain.add( jPanel1, BorderLayout.SOUTH );
...
jPanel1.add( btnA, null );
jPanel1.add( btnB, null );
jPanel1.add( btnC, null );
// Hierzwischen soll ich jetzt 'ein paar Millimeter' Platz einfügen!!
jPanel1.add( btnD, null );
jPanel1.add( btnE, null );

Wenn ich nun an der Stelle einen DummyButton ohne Text einfüge, klappt das zwar, aber der Rahmen stört doch sehr!
Gibt es eine Möglichkeit, einen rahmenlosen Button darzustellen :confused:

Danke und Gruß
Klaus
 
Wie man den Rahmen wegmacht kann ich dir nicht sagen. Versuchs aber mal irgendwie mit BorderFactory, wenn ich mich richtig errinnere.

Zum TableLayout: Mit dem Layout teilst du die Fläche wirklich in so eine Art Tabelle auf. Der Vorteil dabei ist, dass die Felder dynamisch groß sein können und sich somit die Oberfläche an größenänderungen automatisch anpasst.

Für dein Problem könntest du eventuell auch das XY-Layout nehmen. Das ist aber nicht dynamisch.

Was du noch versuchen könntest wäre einfach ein Label ohne Text oder mit Leerzeichen dort einzufügen ;)
 
Wenn ich mich nicht irre, meinst du sowas hier
http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter07/layoutManagers2.html
Dort einfach suchen nach "Box Container with Glue & Struts "

Java:
import javax.swing.*;
import java.awt.*;

/** Demo of Box with glue and struts. **/
public class BoxSpacingApplet extends JApplet
{
  public void init () {
    Container content_pane = getContentPane ();

    // Create a Box with horizontal alignment.
    Box box = Box.createHorizontalBox ();

    // Add the buttons plus spacing components.
    box.add (Box.createHorizontalGlue ());
    box.add (new JButton ("One") );
    box.add (Box.createHorizontalStrut (5));
    box.add (new JButton ("Two") );
    box.add (Box.createHorizontalStrut (5));
    box.add (new JButton ("Three") );
    box.add (Box.createHorizontalGlue ());
    box.add (new JButton ("Four") );
    box.add (Box.createHorizontalGlue ());
    box.add (new JButton ("Five") );
    box.add (Box.createHorizontalGlue ());

    // And add box to the Applet's panel.
    content_pane.add (box);
  } // init

} // class BoxSpacingApplet

oder so hab ich es gemcaht
Java:
panel.add( Box.createRigidArea( new Dimension( 20 , 0 ) )  );
 
Zuletzt bearbeitet:
Was du noch versuchen könntest wäre einfach ein Label ohne Text oder mit Leerzeichen dort einzufügen

Hallo Matze,

JA ... super - Danke ! ! !
Das war genau der richtige Denkanstoß ^^

Da hätte ich aber eigentlich auch selbst drauf kommen können ... :suspekt:

Mit Layout und Box muss ich mal rumspielen, wenn ich mehr Zeit habe ... jetzt kurz vor dem Urlaub wird das wohl nix ... ;-)

Aber Danke für die Anregungen ! !

tschüss
Klaus
 
Hm, das is doch net schwer da ne Zeile einzufügen mit Box.createRigidArea?

Java:
jPanel1.add( btnA, null );
jPanel1.add( btnB, null );
jPanel1.add( btnC, null );
jPanel1.add( Box.createRigidArea( new Dimension( 20 , 0 ) )  );
jPanel1.add( btnD, null );
jPanel1.add( btnE, null );
 
Moin MiMi,

Ja, Du hast Recht ! ! ! :p
Das ist in der Tat noch wesentlich eleganter, da es im Gegensatz zum Label nur eine Zeile ist ...

Genau sowas hatte ich gesucht - Danke ;)

Gruß
Klaus
 

Neue Beiträge

Zurück