So richten Sie JLabel-JTextField-Paare vertikal aus

8

Was ich mit einem JLabel-JTextField-Paar meine, ist eine JLabel-Komponente gefolgt von einer JTextField-Eins, zum Beispiel "Parameter 1: -----" wobei "-----" für ein leeres JTextField steht.

Das Problem ist, dass die Breite von JLabels aufgrund der unterschiedlichen Länge der Parameternamen variiert, so dass die Starts von JTextFields nicht vertikal ausgerichtet sind.

Gibt es eine Möglichkeit, die JLabels vertikal an ihrer rechten auszurichten, sodass die nachfolgenden JTextFields ausgerichtet werden? Danke.

    
skyork 14.05.2011, 22:44
quelle

7 Antworten

6
  

Gibt es eine Möglichkeit, die JLabels vertikal an ihrer rechten auszurichten, sodass die nachfolgenden JTextFields ausgerichtet werden?

1.6+, GroupLayout . Z.B. von den JavaDocs:

Verwenden Sie die Etikettenausrichtung, die den Text an den RHS schiebt.

Siehe auch diese Antwort für einen MCVE.

    
Andrew Thompson 15.05.2011, 09:50
quelle
6

Sie haben nicht angegeben, welches Layout Sie verwenden. Ein gutes Layout für die Implementierung wäre also GridBagLayout . Die Demo auf der Oracle-Seite ist großartig, um damit zu beginnen.

Und ein kurzes Beispiel:

%Vor%     
MByD 14.05.2011 22:49
quelle
3

oder

es ist möglich, nur Text in JTextComponents mit

auszurichten %Vor%     
mKorbel 14.05.2011 23:04
quelle
2

Dies ist ein perfekter Anwendungsfall für DesignGridLayout :

%Vor%     
jfpoilpret 15.05.2011 09:48
quelle
1

Ich würde den Layout-Manager GridLayout empfehlen. Es stellt die einfachste Lösung dar, um paarweise Visualisierungen von Label- und Textbox-Steuerelementen anzuzeigen. Dadurch definieren Sie einfach die Anzahl der Zeilen und Spalten zum Zeitpunkt der Instanziierung und die hinzugefügten Steuerelemente werden vom Manager verwaltet.

    
Osiris76 14.05.2011 22:57
quelle
1

Gute Lösungen dafür, die ich gesehen habe, schließen die Verwendung des GridBagLayout (wie oben erwähnt) oder des MiGLayout ein, obwohl seit dem Letzteres ist nicht Bestandteil von Standard-Java. Es muss heruntergeladen und vor der Verwendung auf dem Klassenpfad platziert werden. MiGLayout ist nicht so schwierig zu benutzen.

    
Hovercraft Full Of Eels 14.05.2011 23:15
quelle
0

Der Layout-Manager der übergeordneten Komponente hat die Verantwortung, die enthaltenen Elemente zu positionieren. Vielleicht müssen Sie ein XYLayout setzen.

Siehe setLayoutManager () für Ihre Elternklasse.

    
SJuan76 14.05.2011 22:46
quelle