JTextArea: Text nicht markierbar machen

Hallo!

Gibt es eine Möglichkeit, bei der JTextArea den Text nicht markierbar zu machen? In der Java-API habe ich keine Methode dazu gefunden.

Ohne, dass man die Markierfarbe auf die Hintergrundfarbe der TextArea setzen muss.

Zur Not muss ich bei jedem Klick auf die TextArea die Selection zurücksetzen.

Gruß,
pcworld

Versuch’s mal so:
textArea.setEnabled(False);
Oder so:
textArea.setHighlighter(null);
(im letzten Fall bleibt der Text aber selektierbar, die Selektion wird nur nicht visualisiert)

Hallo!

Hab’s mal mit der ersten Methode probiert, dann hat jedoch die TextArea eine andere Text-Farbe (Hintergrund usw. stimmt sonst):

Das liegt wohl daran, dass die Component deaktiviert ist.
Auch, wenn man über setFont die Farbe zurücksetzt, bleibt sieht man keine Veränderung - weil diese Farbe dann auch „deaktiviert“ dargestellt wird.

JTextArea normArea = new JTextArea();
myArea.setFont(normArea.getFont());```

Sollte es keine andere Lösung geben, muss ich die zweite Methode nehmen, muss dann halt die copy-Funktion schrotten... :-)

Oder gibt es einen Listener, der mich bei Selektierungen informieren kann? In der API hab ich bis jetzt nichts gefunden...

Gruß,
pcworld

Den “inactiveForeground” der TextArea können wir so ändern (Siehe auch: UIManager Defaults):
UIManager.put("TextArea.inactiveForeground", new ColorUIResource(0, 0, 0));

Das gilt dann ja aber für alle inaktiven JTextAreas! Oder kann man das auch nur für eine anwenden?

Gruß,
pcworld

du könntest die UI für die eine überschreiben, weil das für alle gilt

Was genau meinst du damit?
Also ich will, dass nur bei TextAreas von einem bestimmten Typ (hab eine Klasse, die von JTextArea erbt) die Textfarbe auch, wenn die Component deaktiviert ist, immer noch schwarz ist.

Gruß,
pcworld

Du könntest nachsuchen welche Klasse für die UI von den Textareas zuständig ist, sonst kannst du auch einfach mal probieren die setUI oder updateUI zu überschreiben und dann die UI bisschen zu beeinflussen.

Hilft Dir vielleicht JTextComponent.html.setDisabledTextColor(Color)?

Warum so kompliziert?
JTextArea.setFocusable( false ) funktioniert doch wunderbar ^^

[QUOTE=christoph]Warum so kompliziert?
JTextArea.setFocusable( false ) funktioniert doch wunderbar ^^[/QUOTE]

Danke! Ja, das funktioniert wirklich wunderbar :slight_smile:

Gruß,
pcworld