Swing Labeltext am Anfang statt am Ende kürzen

chriis

Aktives Mitglied
Moin,

ich hab ein JLabel das einen Pfad darstellen soll. Nun sind die meisten Pfade, die angezeigt werden sollen, zu lang für das Label und ich sehe immer nur den Anfang und der Rest wird mit Punkten abgekürzt. Ich würde nun gerne den Text vorne abkürzen, sodass man mindestens den Dateinamen sieht.

"X:/Fu/Bar/hallo.welt"
wird zu
"X:/Fu/..."
soll sein
"..llo.welt"

Gibt's ne möglichkeit das einfach zu realisieren, ohne dass ich die Länge berechnen müsste, die der Text einnehmen darf?
 

fastjack

Top Contributor
Entweder du nimmst File.getName() oder Du suchst von hinten nach vorne nach dem xten Vorkommen des (Back)Slashes und schneidest in Verbindung mit String.substring() ab. Wenn es zu lang ist, suchst du halt das Slash dannach und schneidest und vergleichst wieder, solange bis die Länge paßt, oder nur noch der eigentliche Dateiname übrig ist.
 
S

SlaterB

Gast
bei eigenem substring weiß man ja kaum wieviele Zeichen im JLabel aktuell angezeigt werden,

mit TextAlignment rechtsbündig wird vielleicht links abgeschnitten?
 
T

Tomate_Salat

Gast
Er Meint das so:
[c]X:\useable\HelloFoo.bar[/c]

Angenommen das Label schneidet nach 15 zeichen ab, käme raus:
[c]X:\useable\Hell...[/c]
er will aber dass dann da steht:
[c]...le\HelloFoo.bar[/c]

Naja, ich glaube dir bleibt nichts anderes übrig, als den Pfad selbst zu schneiden + dann das Label zu füllen.
 

chriis

Aktives Mitglied
Jo, hat gerade hier ein Beispiel für einen 'left dot renderer' gefunden und mir daraus was gebastelt.

Java:
JFileChooser fchAuthorityFile = new JFileChooser();
FontMetrics fm = lblAuthorityFile.getFontMetrics(lblAuthorityFile.getFont());
String file;
	// OpenFile Dialog öffnen
	if(fchAuthorityFile.showOpenDialog(this) == JFileChooser.APPROVE_OPTION){
		file = fchAuthorityFile.getSelectedFile().getAbsolutePath();
		lblAuthorityFile.setToolTipText(file);
		// Prüfen, ob die Stringlänge zu groß für das Label ist
		if (fm.stringWidth(file) > lblAuthorityFile.getWidth()){
			String dots = "...";
			int textWidth = fm.stringWidth( dots );
			int i = file.length() - 1;
			// String verkürzen, bis die Größe passt
			for (; i > 0; i--){
				textWidth += fm.charWidth(file.charAt(i));
				if (textWidth > lblAuthorityFile.getWidth())
					break;
			}
			file = dots + file.substring(i + 1);
		}
		lblAuthorityFile.setText(file);
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JavaFX Ein Labeltext eine zeitlang anzeigen dann weiter machen AWT, Swing, JavaFX & SWT 3
V Labeltext ändert sich nicht in actionPerformed AWT, Swing, JavaFX & SWT 5
B Labeltext unterstreichen AWT, Swing, JavaFX & SWT 5
G labeltext ändert sich nicht AWT, Swing, JavaFX & SWT 28
S Swing Scrollpanes: wie kann ich durch Java-Code an den "Anfang" scrollen AWT, Swing, JavaFX & SWT 8
C SWT Curser an den Anfang eines Text Objektes setzen AWT, Swing, JavaFX & SWT 12
C SWT Curser an den Anfang eines Textes setzen AWT, Swing, JavaFX & SWT 2
A Grösse des Frames stimmt nicht von Anfang an AWT, Swing, JavaFX & SWT 6
H SWT - KeyListener unterbricht immer am Anfang AWT, Swing, JavaFX & SWT 2
M JTable zum Anfang oder Ende springen AWT, Swing, JavaFX & SWT 9
Tom299 JScrollPane(JTextArea) Scrollbar soll am Anfang stehen AWT, Swing, JavaFX & SWT 2
P JPanel am Anfang unsichtbar AWT, Swing, JavaFX & SWT 4
O haben panels von anfang an einen dummen rand? AWT, Swing, JavaFX & SWT 19
M JScrollPane - Anfang eines hinzugefügten Textes anzeigen AWT, Swing, JavaFX & SWT 2
B An den Anfang in einer JScrollPane springen AWT, Swing, JavaFX & SWT 7
_user_q Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
U Gibt es eine Möglichkeit statt concatenate einen anderen Befehl zu nutzen? AWT, Swing, JavaFX & SWT 9
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
M Java FX Layouts übereinander statt nebeneinander AWT, Swing, JavaFX & SWT 4
S BoxLayout: Anordnung der Komponenten links statt zentriert AWT, Swing, JavaFX & SWT 0
M JDialog statt JFrame AWT, Swing, JavaFX & SWT 22
T Swing Drag and Drop - JLabels tauschen statt überschreiben AWT, Swing, JavaFX & SWT 11
J Swing GridBagLayout: Links-nach-rechts Orientierung statt zentriert AWT, Swing, JavaFX & SWT 12
C JCheckBox Kreuz statt Haken AWT, Swing, JavaFX & SWT 7
N JTable RadioButton statt Checkbox AWT, Swing, JavaFX & SWT 4
C JTextPane <br oder <p> statt \n AWT, Swing, JavaFX & SWT 2
P [SWT] Background-Image skalieren statt kacheln AWT, Swing, JavaFX & SWT 2
0 JTable - Hintergrund Tabellen statt Grau AWT, Swing, JavaFX & SWT 5
J *** statt Text AWT, Swing, JavaFX & SWT 2
R Double in der Tabelle statt String und Integer AWT, Swing, JavaFX & SWT 3
P Warum Swing statt Awt? AWT, Swing, JavaFX & SWT 4
G Bei JScrollpane statt Scrollbar eine Vorschau verwenden AWT, Swing, JavaFX & SWT 3
N schwarz statt bild AWT, Swing, JavaFX & SWT 5
A Drucker Auswahlmaske statt auf dem Standarddrucker zudrucken AWT, Swing, JavaFX & SWT 4
R JTextFields mit Return statt Tab anwählen AWT, Swing, JavaFX & SWT 4
N JFileChooser wechselt Farbe (grün statt blau) AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben