JTree / JTextArea

iDreamer

Grünschnabel
Hallo zusammen,

ich habe einen JTree mit Knoten vom Typ DefaultMutableTreeNode und würde gerne den Text eines Knotens nur teilweise fett darstellen, also zB.

Code:
Ein fetter Teil des Textes

Leider komme ich nicht drauf, wie man den Text des Objekts so ansprechen kann, dass man auf ihn noch sowas wie setFont(...) anwenden kann.

Bisher habe ich das hier, damit wird aber nur der gesamte Knoten fett.

Code:
	public Component getTreeCellRendererComponent(JTree tree, Object value,
			boolean selected, boolean expanded, boolean leaf, int row,
			boolean hasFocus) {

		super.getTreeCellRendererComponent(tree, value, selected, expanded,
				leaf, row, hasFocus);

		Font fb = new Font(Font.MONOSPACED, Font.BOLD, 12);
		Font fp = new Font(Font.MONOSPACED, Font.PLAIN, 12);
		
		if (value.toString().contains("Path from ") && value.toString().contains(" to ")) {
			this.setFont(fb);
		}
		else { 
			this.setFont(fp);
		}
		return this;
	}



Weiterhin würde ich gerne ebenfalls für einen Teil eines Knotentextes ein Tooltip definieren, bin aber nicht ganz sicher ob das überhaupt möglich ist.



Zu guter Letzt muss ich den Quellcode einer Java-Datei in Swing (wohl am Besten mit JEditorPane) incl Syntax-Highlighting, wenn möglich, anzeigen.
Das einlesen ansich ist ja kein Problem, aber kann ich irgendwie komfortabel auf die Highlighting-Regeln von Eclipse zugreifen, ohne gleich Eclipse nachzubauen? Oder gibts vielleicht noch eine einfachere Lösung?

Ich danke euch für eure Antworten!

Gruß,
iDreamer
 
Zuletzt bearbeitet:
Ja eigentlich schon. Manchmal geht was unter. Sorry...

Bin allerdings auch kein Swing Experte...

Also wenn du nur einen Teil fett machen willst und auch noch ToolTips würde ich fast nen JPanel mit Labels empfehlen die du entsprechend nach fett/nicht fett aufteilst und dort einzeln Tooltips setzen kannst.

Das sieht auch noch ganz interessant aus, allerdings ohne ToolTips: http://exampledepot.com/egs/javax.swing.text/style_HiliteWords.html

eclipse verwendet übrigens SWT/JFace und kein Swing, von daher kann man das nicht einfach von eclipse übernehmen. Syntax Highlighting ist leider ein wenig aufwendiger.

Auf die schnelle habe ich erstmal das gefunden:
http://java.sys-con.com/read/36509.htm
 
Hallo zeja,

vielen Dank für deine Antwort, und ebenfalls vielen Dank für deine Mühe mit dem Code. Er funktioniert einwandfrei.

Ich hab noch ne ScrollPane dazwischen gesetzt, damit man auch im Code navigieren kann.

Code:
JScrollPane scroller = new JScrollPane(editor);
frame.getContentPane().add(scroller);

Rausfinden muss ich noch, wie ich den Zeilenumbruch abstelle, und dafür auch einfach eine horizontale Scrollbar setze.

EDIT: Rausgefunden...


Das Hauptproblem ist aber, dass ich eigentlich keinen Editor nachbauen möchte (vielleicht hab ich mich falsch ausgedrückt), sondern nur eine fertige Java-Datei anzeigen lassen möchte.

Ich möchte also zB mit

Code:
try {
        editor.read(new FileReader("C:\\Testfile.java"), "");
    } 
    catch (Exception e) {
        e.printStackTrace();
    }

eine Datei automatisch einlesen lassen, und diese soll dann formatiert werden.

Das hab ich nun in deinem Beispiel versucht, leider ohne Erfolg. Entweder wird gar nichts angezeigt (wenn ich das Einlesen zu früh mache), oder die Datei wird unformatiert angezeigt.
Wie bringe ich das Programm dazu, nach dem Einlesen nochmal den Highlighter drüberlaufen zu lassen?

Im Voraus schonmal vielen Dank!

Grüße,
iDreamer
 
Zuletzt bearbeitet:
Zurück