Zeilenhöhe einer JTable anpassen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Wie kann ich die Zeilehöhe einer JTable immer optimal anpassen, wenn ich die JTable mittels renderer und editor erstellt habe und darin eine Textarea liegt.
Die Zeilehöhe soll immer so groß sein dass alle Textzeilen in der Textarea dargestellt werden.
 

abollm

Top Contributor
Anonymous hat gesagt.:
Wie kann ich die Zeilehöhe einer JTable immer optimal anpassen, wenn ich die JTable mittels renderer und editor erstellt habe und darin eine Textarea liegt.
Die Zeilehöhe soll immer so groß sein dass alle Textzeilen in der Textarea dargestellt werden.

Wenn du einen entsprechenden Renderer hast, indem du ihn z.B. spaltenweise allen Zeilen deiner JTable zuweist:

Code:
...
   table = new JTable(model);
   table.getColumn(cols[0]).setPreferredWidth(100);
   table.getColumn(cols[1]).setPreferredWidth(150);
   table.getColumn(cols[2]).setPreferredWidth(250);
   // Zuweisen des Multiline-Cell-Renderers
   table.getColumn(cols[0]).setCellRenderer(new MultiLineCellRenderer());
   // Zuweisen eines Cell-Editors
   table.getColumn(cols[0]).setCellEditor(new TextEditor());
...

Hoffe, dir geholfen zu haben.
 

abollm

Top Contributor
Gast hat gesagt.:
Versuch mal mit

table.setRowHeight(20);

Das war aber nicht gemeint, so wie ich die Frage verstanden habe. Der OP möchte ja eine dynamische Anpassung der Zeilenhöhe an den Zelleninhalt habe.

Das, was du vorschlägst, ist die Zuweisung einer konstanten Zeilenhöhe.
 
S

sofa-surfer

Gast
ich hab einfach ne methode geschrieben, die sich die preferredSize() von dem Zelleninhalt (also TextArea) nimmt und dann deren Höhe als Zeilenhöhe in der gerade geänderten Zeile setzt. jetzt mal ganz allgemein gesagt ....
 

jawohl

Mitglied
also ich habs bsi jetzt mal mit
Code:
   if (table.getRowHeight()!= (int) this.getMinimumSize().height) 
   table.setRowHeight(row, (int) this.getMinimumSize().height);
hinbekommen. Wenn ich jetzt allerdings etwas in der zeile ändere muss ich noch auf eine andere Zeile danach clicken damit sich die Zeile vergrößert oder verkleinert. Noch dazu kommt dass dieser code die ganze zeit neu ladet.

Hat jemand eine bessere Lösung - die ist nämich nicht wirklihc optimal.

Sofa-surfer, könntest du mir eventuell den code posten?
 

abollm

Top Contributor
jawohl hat gesagt.:
[..] hinbekommen. Wenn ich jetzt allerdings etwas in der zeile ändere muss ich noch auf eine andere Zeile danach clicken damit sich die Zeile vergrößert oder verkleinert. Noch dazu kommt dass dieser code die ganze zeit neu ladet.

Hat jemand eine bessere Lösung - die ist nämich nicht wirklihc optimal.

Sofa-surfer, könntest du mir eventuell den code posten?

Ich habe die von mir oben erwähnte Methode implementiert, d.h.

- Hinzufügen eines eigenen Cell-Editors
- spaltenweises Hinzufügen eines eigenen Cell-Renderers

Beim Ändern der in der betreffenden Spalte befindlichen Zelle muss ich nur noch diese Zelle Verlassen und schon wird die neue Größe angezeigt.

Ich denke, das von dir beschriebene Problem liegt daran, dass du zeilenweise wie folgt zuweist:


Code:
 table.setRowHeight(row, (int) this.getMinimumSize().height);

anstatt spaltenweise (s. auch oben).

Der Vorteil liegt auf der Hand, denn bei einer spaltenweisen Zuordnung musst du nur in eine andere Zelle klicken, anstatt in eine neue Zeile.
 
S

sofa-surfer

Gast
weiß nicht ob der code soviel nützen wird für dein problem ....
Code:
private void resizeRow(int row)
    {
        table.setRowHeight(row, (((JTree)table.getValueAt(row, 0)).getPreferredSize()).height);
    }

Ist halt einfach nur das was ich schon oben geschrieben hab ....
 

jawohl

Mitglied
Ja nur das problem ist dass sich die zeile nicht erst bei einem Click in einer andere Zelle, Reihe, Spalte ändern soll sondern während ich in der Zelle, speziell in der Textarea schreibe bzw. den Text ändere.
Daher denke ich mal dass ich dieses Problem mit einem Listener lösen muss. Nur welcher dafür geeignet wäre und wie weiß ich noch nicht so genau.
 
S

sofa-surfer

Gast
kenn mich jetzt in den tiefen des listener-universums nicht so aus (und hab gerad auch nicht nachgeschaut), aber zur not lässt du die textarea von observable erben und die tabelle von observer. das wird wohl auf jeden fall gehen ....
 

Sky

Top Contributor
Wenn ich dein Problem richtig verstehe, so soll sich die Zeilenhöhe quasi während der Eingabe ändern?

Hier reicht ein einfacher KeyListener, der bei jedem Tastenklick prüft, ob die Höhe sich ändern muss.
 

jawohl

Mitglied
Also das hier ist mal mein Code inklusive Listener. Dummerweise macht er nur gar nichts wenn ich irgendwas ändere im Textfeld. Nicht mal jawohl gibt er aus :(. Weiß wer worans liegt?

Code:
public class MyTableCellRenderer extends JTextArea implements TableCellRenderer
{
    public MyTableCellRenderer() {
    	setLineWrap(false);
   	    setWrapStyleWord(true);
    	setEditable(true);
    	setOpaque(true);

    	
  }
  
  public KeyListener keyListener = new KeyAdapter() {
    public void keyTyped(KeyEvent e) {
    
      	System.out.println("JAWWWWWOOOOOOOOOOOOOOOOOOOOOHL");
      	
     /* 	    //Zeilenhöhe anpassen
    if (table.getRowHeight()!= (int) this.getMinimumSize().height) 
    table.setRowHeight(row, (int) this.getMinimumSize().height); */

    }
  };  
     		

	
	public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected,
	 						boolean hasFocus, int row, int column) {

								
	    if (isSelected)
	    {
	    	
	    	
      		setForeground(table.getSelectionForeground());
      		setBackground(table.getSelectionBackground());
	    }	 
    	    else
     	    {
      		setForeground(table.getForeground());
      		setBackground(table.getBackground());
    	    } 
    	    
    	    setFont(table.getFont());
    	    
    if (hasFocus)
    {
	setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") );
	
        if (table.isCellEditable(row, column))
        {
        	
        	setForeground( UIManager.getColor("Table.focusCellForeground") );
        	setBackground( UIManager.getColor("Table.focusCellBackground") );
        }
    }
    else
    {
       	setBorder(new EmptyBorder(1, 2, 1, 2));
    }
    
    //Text in die Textarea schreiben
    
    setText((obj == null) ? "" : obj.toString());							
    
	addKeyListener(keyListener);
     
	
  return this;
       
  }
  }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F JavaFX ListView Zeilenhöhe AWT, Swing, JavaFX & SWT 2
B Swing Gridbaglayout unterschiedliche Zeilenhöhe AWT, Swing, JavaFX & SWT 6
G jTable mit automatischer Zeilenhöhe je nach Fenstergröße. AWT, Swing, JavaFX & SWT 3
T Swing JTable dynamische Zeilenhöhe AWT, Swing, JavaFX & SWT 5
M JTable Zeilenhöhe Look and Feel AWT, Swing, JavaFX & SWT 2
G JTable - Zeilenhöhe variable? AWT, Swing, JavaFX & SWT 2
F Zeilenhöhe bei SWT Table AWT, Swing, JavaFX & SWT 3
R Zeilenhöhe im JTree setzen AWT, Swing, JavaFX & SWT 5
R JTextArea in JTable und die optimale Zeilenhöhe AWT, Swing, JavaFX & SWT 11
T Variable Zeilenhöhe in jTable AWT, Swing, JavaFX & SWT 5
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
T VerifyListener - Ersetzen einer 0 AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
H JavaFX Timeline II: Verschieben einer ImageView AWT, Swing, JavaFX & SWT 16
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
L Swing TextPanel Schrift untereinander und auf einer Höhe AWT, Swing, JavaFX & SWT 3
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
mac2010 JavaFX Einbindung einer Karte AWT, Swing, JavaFX & SWT 1
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
W Aufrufen einer bestimmten Scene mit if-Bedingung AWT, Swing, JavaFX & SWT 4
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
@SupressWarnings() JavaFX Auf den Controller einer ListCell zugreifen AWT, Swing, JavaFX & SWT 4
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
B Textfelder in einer ListView ausgeben AWT, Swing, JavaFX & SWT 13
J Searchfunktion auf einer MS Access Datenbank AWT, Swing, JavaFX & SWT 7
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
M Inhalte einer FlowPane AWT, Swing, JavaFX & SWT 4
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
FRI3ND JavaFX: Wie kann ich einer Scene Argumente übergeben? AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
K JavaFX ViewTable mit einer LinkedList befüllen AWT, Swing, JavaFX & SWT 3
L CardLayout in einer Klasse? AWT, Swing, JavaFX & SWT 2
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing Ausführung einer SwingWorker Klasse stoppen AWT, Swing, JavaFX & SWT 4
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
MiMa Selektion aus einer ListView AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J JFram Location aus Konstruktor einer anderen Klasse auslesen AWT, Swing, JavaFX & SWT 10
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
J Suche nach einer horizontal aufklappbaren Toolbar AWT, Swing, JavaFX & SWT 1
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
D JavaFX Einbinden einer .fxml AWT, Swing, JavaFX & SWT 1
B Zeile einer Tabelle selektieren AWT, Swing, JavaFX & SWT 1
A Prüfung einer Eingabe auf Gleitkommazahl AWT, Swing, JavaFX & SWT 5
J Suchmaschine einer Datenbank AWT, Swing, JavaFX & SWT 5
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
M Auswahl aus einer ListView AWT, Swing, JavaFX & SWT 3
J JavaFX - Felder (Label) in einer ForSchleife bearbeiten AWT, Swing, JavaFX & SWT 4
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
C JavaFX Tief setzen in der Überschrift einer Tabellenspalte AWT, Swing, JavaFX & SWT 3
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8
M Wert einer Zelle aus JTable ziehen AWT, Swing, JavaFX & SWT 4
P Einer JList mit eigenem ListModel einen Eintrag hinzfügen AWT, Swing, JavaFX & SWT 5
K JTable in extra Klasse, Zugriff in einer anderen klasse nicht möglich AWT, Swing, JavaFX & SWT 26

Ähnliche Java Themen


Oben