Zeilenumbrüche im JTable

Moin,
indem Du das per HTML und <br> erledigst oder als TableCellRenderer für die jeweilige Spalte eine JTextArea nimmst und dieser setLineWrap(true) und setWordWrap(true) (oder so ähnlich weiss ich jetzt nicht auswendig) zuweist.
 
Original geschrieben von Snape
Moin,
indem Du das per HTML und <br> erledigst oder als TableCellRenderer für die jeweilige Spalte eine JTextArea nimmst und dieser setLineWrap(true) und setWordWrap(true) (oder so ähnlich weiss ich jetzt nicht auswendig) zuweist.

Hallo,

Ich hatte das gleiche Problem und habe diesen Tip befolgt.

Jetzt habe ich den Zeilenumbruch erreicht ,aber
es lassen sich nun die Zeilen in der JTable nicht mehr visuell markieren.
Man kann immerhin aber noch anwählen.

Wie kann ich das Problem lösen ?
Die Altenative mit HTML und <br> würde mich zudem auch interessieren ?

Vielen Dank im Voraus

Gruß
Dawid
 
Original geschrieben von drey
Hallo,

Ich hatte das gleiche Problem und habe diesen Tip befolgt.

Jetzt habe ich den Zeilenumbruch erreicht ,aber
es lassen sich nun die Zeilen in der JTable nicht mehr visuell markieren.
Man kann immerhin aber noch anwählen.

Wie kann ich das Problem lösen ?

Erklär mal genauer, was Du meinst mit anwählen nein - markieren ja.

Die Altenative mit HTML und <br> würde mich zudem auch interessieren ?

Vielen Dank im Voraus

Gruß
Dawid

Mit html wird nur bei festem Text gehen, z.B.
String myHTMLString = "<html><body>Text vor Zeilenumbruch<br>Text nach Zeilenumbruch</body></html>";
 
Hallo,

Vielen Dank schonmal für die schnelle Antwort.

Mit dem Markieren des Zellen meine ich das Selektieren,
sodaß die Zelle b.z.w. Spalte sich in der JTabler blau einfäbt,falls
ich auf eiene entsprechenden Eintrag Klicke.

Dieses Verhalten ist durch den Renderer , der von JTextArea abgeleitet
wurde verloren gegangen!

gruß
Dawid
 
Original geschrieben von drey
Hallo,

Vielen Dank schonmal für die schnelle Antwort.

Mit dem Markieren des Zellen meine ich das Selektieren,
sodaß die Zelle b.z.w. Spalte sich in der JTabler blau einfäbt,falls
ich auf eiene entsprechenden Eintrag Klicke.

Dieses Verhalten ist durch den Renderer , der von JTextArea abgeleitet
wurde verloren gegangen!

gruß
Dawid

Das lässt sich ganz einfach erledigen mit der sowieso schon implementierten

public java.awt.Component getTableCellRendererComponent(javax.swing.JTable tab, Object value, boolean issel, boolean hasfocus, int row, int col)

wobei issel / hasfocus beachtet werden muss.
Dazu noch einfach die paint()-Methode im Renderer z.B. so implementieren:

Code:
public void paint(Graphics g)
{
	super.paint( g );
	if( isfocussed )
	{
		g.setColor(SystemColor.yellow);
		g.drawRect(1, 1, getWidth() - 2, getHeight() - 2);
	} 
}

Also
private boolean isfocussed;
und an geeigneter Stelle in getTableCellRendererComponent(...) setzen mit
isfocussed = hasfocus;

Bzw. je nach Wunsch analog mit issel.
 
Hi,

vielen Dank , dies ist schonmal super.
Dies mit der Marikierung klappt schonmal hervorragend..

Aber wenn ich nunnmal auf den Zeilenumbruch und zur Wurzel dieses Betrags zu sprechen komme.

Ich möchte folgendes erreichen.
Da der Zeilenumbruch schonmal realisiert ist, muß man ja nur dafür
sorgen, daß die Zeilehöhe ausreichend groß genug ist .

Hier wäre es gut , aus Gründen der Übersichtlichkeit , wenn man
Einfluß auf einzellne Zeilen Zeilen hätte und nicht mit "setRowHeight"
die Zeilenhöhe für alle Zellen bestimmt.

Frage:

Wie kann mam so etwas realisieren ?
 
Original geschrieben von drey
Aber wenn ich nunnmal auf den Zeilenumbruch und zur Wurzel dieses Betrags zu sprechen komme.

Ich möchte folgendes erreichen.
Da der Zeilenumbruch schonmal realisiert ist, muß man ja nur dafür
sorgen, daß die Zeilehöhe ausreichend groß genug ist .

Hier wäre es gut , aus Gründen der Übersichtlichkeit , wenn man
Einfluß auf einzellne Zeilen Zeilen hätte und nicht mit "setRowHeight"
die Zeilenhöhe für alle Zellen bestimmt.

Frage:
Wie kann mam so etwas realisieren ?

Schwierig, denn Du müsstest ausrechnen, wie viele Zeilen der darzustellende Text benötigt.
BTW auch für Dich sollte diese URL interessant sein: http://www.codeguru.com/java/Swing/
Dort gibt es instruktive Beispiele zu diversen Swing-Komponenten.
 
Korrektur!

Sorry ,

Ich muß mich dabei nochmals korrigieren.

Die Methode JTable.setRowHeight kann auch nur bei ausgewählten Zellen
die Größe ändern .

Trotzem vielen Dank...
 
Hi,

ich hab auch eine JTable mit JTextFields und JTextArea. Ich habs hinbekommen dass die JTextArea den Zeilenumbruch durchführt.

Was allerdings noch fehlt ist, dass die Zeilen (komplette Zeile) ihre Höhe verändert.

Ich hab das table.setRowHeight in die
Code:
public Component getTableCellRendererComponent(JTable table, Object value,
               boolean isSelected, boolean hasFocus, int row, int column) {
Methode geschrieben. Das funktioniert, aber meine Systemresourcen gehen zu neige.

An welcher stelle muss ich das setRowHeight platzieren und wie komm ich an die row?

Danke
 

Neue Beiträge

Zurück