Text in einen Button quetschen

hasha

Mitglied
Hallo,

ich habe ein kleines Problem, von dem ich dachte, es wäre schnell gelöst, aber jetzt zieht es sich doch ganz schön: Auf einen Button passt sein Text ("Herausfordern") nicht drauf. Wenn ich die Methoden "setHorizontalAlignment(SwingConstants.LEFT)" oder "setHorizontalTextPosition(SwingConstants.LEFT)" benutze, bringt es nichts, da der Text zu lang ist. Nur wenn der Text klein genug ist, wird er dann am linken Rand positioniert. Die Schriftgröße verkleinern geht auch nicht, weil man die Schrift dann kaum noch lesen kann...

Gibt es eine Möglichkeit den Platz auf dem Button etwas besser zu nutzen bzw. den Text dort reinzuquetschen? Die Größe des Buttons würde ich gerne so lassen.

Hier ist der Quellcode:
Java:
public JButton btHerausfordern = new JButton ("Herausfordern");
...
btHerausfordern.setBounds(20, 200, 95, 30);
    btHerausfordern.setBackground(Color.getHSBColor(BUTT[0], BUTT[1], BUTT[2]));
    btHerausfordern.setHorizontalAlignment(SwingConstants.LEFT);
    btHerausfordern.setHorizontalTextPosition(SwingConstants.LEFT);  
    btHerausfordern.addActionListener(this);
    btHerausfordern.setEnabled(false);
    paLeft.add(btHerausfordern);


Danke im Voraus! 🙂
 
Ich kenne mich mit Swing nicht so aus, aber einen Elefanten bekommst du auch
nicht in eine Vase ohne Minimierungsstrahler.
In JavaFX würde das sehr wahrscheinlich noch gehen, weil du den Button "ummodeln" kannst
und z.B. das Padding verändern kannst.
Wie modifizierbar die Swing-Elemente sind weiß ich allerdings nicht.

Ansonsten gibt es keine kürzeren Namen der das gleiche aussagt? Zum Beispiel einfach "Angriff"
"Duell" o.ä.?
 
Zuletzt bearbeitet:
Im Zweifelsfall von JButton erben und entsprechend erweitern.
Wie weit das möglich ist, müsst' ich auch erst ausprobieren.
 
Oder halt einfach einen komplett eigenen Button Designen, den Tip hat arilou ja schon gegeben, da kannst du dann von JComponent oder AbstractButton ableiten und selbst dafür sorgen wie da wo was gezeichnet / Behandelt wird.

btHerausfordern.setBounds(20, 200, 95, 30);

ich tippe mal darauf du verwendest ein null-Layout ?

Wenn ja, warum ?
 
Zuletzt bearbeitet:

Zurück
Oben