Zeilenumbruch in JTextArea

Maike82

Grünschnabel
Hallo Zusammen,

ich verwende eine JTabbedPane, der ich als TabComponent jeweils ein Panel mit einer JTextArea übergebe. Der Grund, warum ich das so umständlich mache ist, dass jedes Tab eine feste Größe haben soll und der Text innerhalb der Tabs automatisch umbrechen soll, wenn er zu lang wird. Das heißt, ich setze über setPreferredSize für das Panel eine Größe. Und die TextArea sorgt dafür, dass der Text umbricht. Alles soweit ok :)

Das Problem ist jetzt das Umschalten der Tabs. Dies funktioniert nur, wenn ich in einen Bereich außerhalb der JTextArea klicke. Klicke ich direkt auf den Text, tut sich leider nichts. Hier der Code für meine JTextArea:

Code:
textArea = new JTextArea("Dies ist ein Test");   
textArea.setEditable(false);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.setFocusable(false);
textArea.setAlignmentX(JTextArea.CENTER_ALIGNMENT);
textArea.setAlignmentY(JTextArea.CENTER_ALIGNMENT);

Wie kann ich bewirken, dass wenn ich auf die JTextArea klicke, das jeweilie Tab selektiert wird?!

Vielen Dank für euere Hilfe!
 
Hi,

tut mir leid, ich verstehe dein Problem nicht. Geht es jetzt wie im Titel um den Zeilenumbruch in der JTextArea oder geht es um ein Problem mit dem JTabbedPane?
 
Hallo,

also wenn ich es richtig verstanden hab, hast du dem der JTabbenPane dort wo der Titel steht, ein JPanel hinzugefügt, welches eine JTextArea beinhaltet, damit der Titel der TabbedPane einen Zeilenumbruch hat.

Ich kenne dein Problem. Das liegt daran, dass die TabbedPane einen MouseListener hat, der auf den Klick reagiert. Die TextArea hat auch einen MouseListener. Deshalb reagiert die TabbedPane nicht mehr. Die TextArea fängt die MouseEvents ab und deshalb bekommt die TabbedPane den Klick nicht und kann deshalb nicht drauf reagieren.
Ich habe zur Zeit ein ähnliches Problem, hab aber leider noch keine Lösung gefunden, aber sobald ich eine habe, werde ich diese hier posten.

MFG

zEriX
 
@ Matze from HwI:
Ja du hast Recht, der Titel dieses ist nicht ganz aussagekräftigt, kann ihn aber soweit ich weiß nicht mehr ändern. Aber mir geht es um das Problem mit der Tabbed Pane.

@ zerix:
Genau! Wäre super, wenn du dafür eine Lösung finden würdest ;) Ich werde auch mal weiter recherchieren und schauen, wie ich das Problem angehe. Melde mich, falls ich was weiß.
 
Achso ist das gemeint.
hmm... also du könntest anstatd dort eine JTextArea reinzustopfen versuchen die Beschriftung der Tabs als html Text anzeigen zu lassen, dann kannst du dort auch einen Zeilenumbruch einfügen. Hab ich in einem Label schonmal gemacht, weiß aber leider nicht mehr genau wie.

Was aber sicher funktionieren müsste, du frägst ab auf welcher JTextArea das Ereigniss stat fand, und wählst dann den Tab händisch an. Z.b. wenn JTextArea2 angecklickt wurde, dann JTabbedPane.setSelectedIndex(<Tab auf dem die Area liegt<
 
@zerix:

Ich habe das Problem schon gelöst. Und zwar habe ich meine eigene TextArea von JTextArea abgeleitet und zusätzlich den MouseListener implementiert. In der Methode "mouseClicked" selektiere ich einfach manuell das aktuelle Tab über "setSelectedIndex".

Falls du Code-Auszüge brauchst, kann ich dir gerne was schicken...
Danke nochmal für deinen Beitrag, der mich letzendlich auf die doch simple Lösung gebracht hat :)

Viele Grüße
 
@zerix
vieleicht kannst du dein Problem so lösen, dass die JTextArea das aufgefangene Event weitergibt and die darunterliegende Komponente.
 
Nachdem dieses Problem gelöst ist, folgenen weitere... Die TextArea wird linksbündig angezeigt. Die Titel der TabbedPane Tabs sollen aber sowohl vertikal als auch horizontal zentriert sein. Mit einem Label oder einer JTextPane funktioniert das wunderbar, aber dann habe ich wieder das Problem mit dem Zeilenumbruch :-(
 
Zurück