JTable in Spalte von anderer JTable nicht editierbar

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich habe eine "äußere" JTable. Je Zeile enthält eine Spalte eine andere "innere" JTable. Diese wird auch wie gewünscht angezeigt. Nun möchte ich jedoch die Zeilen der "inneren" Tabelle auswählen. Wenn ich aber die entsprechende Zelle in der äußeren Tabelle selektiere, kann ich aber nicht auf die Werte (Zeilen/Spalten) der inneren Tabelle zugreifen.


Hat jemand eine Idee, wie ich die Zeilen meiner inneren Tabelle in der äußeren selektierbar machen kann? Ich hatte schon iseditable der äußeren auf true gesetzt, das hilft aber auch nichts :-(

Danke und Grüße
 
G

Guest

Gast
Hmm,

die 3te Spalte der äußeren Tabelle beinhaltet die innere JTable. Nun habe ich bei der äußeren (dritten) TableColumn tc
den Renderer gesetzt...

Code:
tc.setCellRenderer(new TableCellRenderer()
			{ ... }
das funktioniert ja auch. Die Tabelle wird ja angezeigt. Wenn ich jedoch

Code:
tc.setCellEditor(new JTableCellEditor());

und dieser gibt mir

Code:
public Component getTableCellEditorComponent(JTable table,
					Object value, boolean isSelected, int row, int column) {
				// TODO Auto-generated method stub
				JTable tab = (JTable) value;
				return tab;
			}

zurück. Das funktioniert aber nicht. D.h. ich kann meine innere Tabelle noch immer nicht selektieren. Was mache ich da falsch?
 

André Uhres

Top Contributor
"tab" deklarieren wir nicht lokal, sondern als Instanzvaiable, die wir in getCellEditorValue zurückgeben.
 
G

Guest

Gast
Hallo nochmal,

ich habe jetzt mal einen Beispielcode erstellt, welcher mir in der letzten Spalte eine selektierbare JTable erzeugt. Ich kann jetzt auch eine JTable selektieren. Sobald ich aber einmal eine Auswahl getroffen habe, ist die "äußere" Tabelle bzw. die dazugehörigen anderen Zeilen nicht mehr selektierbar. Und auch die anderen "inneren" Tabellen können nach einer ersten Selektion nicht mehr weiter selektiert werden.

Hier mal der Beispielcode in einer Datei...

Code:
import java.awt.Component;
import java.util.EventObject;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;


public class MainWindow extends JFrame {

	public MainWindow()
	{
	super();
	this.setSize(300, 300);
	TableModel dataModel = new AbstractTableModel() 
			{
          	public int getColumnCount() { return 3; }
          	public int getRowCount() { return 4;}
          	public Object getValueAt(int row, int col) 
          		{ 
          		if(col==2) return new JTable(3,1);
          		return new Integer(row*col);
          		}
			
          	public boolean isCellEditable(int rowIndex,int colIndex)
          	{
          	if(colIndex==2) return true;	
          	return false;	
          	}
          	
    		public Class<?> getColumnClass(int columnIndex) {
    				if(columnIndex == 2) return JTable.class;
    				return super.getColumnClass(columnIndex);
    			}
			
			};
			
      JTable table = new JTable(dataModel);
      JScrollPane scrollpane = new JScrollPane(table);
    
    TableColumn tc = table.getColumnModel().getColumn(2);  
  	tc.setCellRenderer(new TableCellRenderer()
	{

		@Override
		public Component getTableCellRendererComponent(JTable table,
				Object value, boolean isSelected, boolean hasFocus,
				int row, int column) {
			// TODO Auto-generated method stub
			JTable tab = (JTable) value;
			table.setRowHeight(row, 100);
			return tab;
		}
	
	});
  	
  	tc.setCellEditor(new TableCellEditor()
  		{

  			@Override
  			public boolean isCellEditable(EventObject arg0) {
			// TODO Auto-generated method stub
  				return true;
  			}

			@Override
			public Component getTableCellEditorComponent(JTable table,
					Object value, boolean isSelected, int row, int column) {
				return (JTable) value;
			}

			@Override
			public void addCellEditorListener(CellEditorListener arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void cancelCellEditing() {
				// TODO Auto-generated method stub
				
			}

			@Override
			public Object getCellEditorValue() {
				// TODO Auto-generated method stub
				return null;
			}

			
			@Override
			public void removeCellEditorListener(CellEditorListener arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public boolean shouldSelectCell(EventObject arg0) {
				// TODO Auto-generated method stub
				return false;
			}

			@Override
			public boolean stopCellEditing() {
				// TODO Auto-generated method stub
				return false;
			}
  		
  		}
  	);
		
		
  

      
      this.getContentPane().add(scrollpane); 

	}
	
}
 
G

Gast

Gast
@André
>"tab" deklarieren wir nicht lokal, sondern als Instanzvaiable, die >wir in getCellEditorValue zurückgeben.

Hmm, es scheint doch auch so zu gehen, oder wieso muss das als Instanzvariable deklariert werden?
 

André Uhres

Top Contributor
Naja, wenn's geht ist es ja gut. Aber was ist mit getCellEditorValue?

EDIT: Dein TableModel enthält keine Daten und implementiert nicht die Methode setValueAt.

EDIT2: Den Editor sollten wir am besten von AbstractCellEditor ableiten.
 
G

Guest

Gast
Hallo André,

vielen Danke für deine Hilfe! Leider klappt es noch immer nicht. Ich habe jetzt ein kleines Model für die innere Tabelle angegeben. Jedoch kann nach Selektion einer Zeile der inneren Tabelle immernoch keine Zeile der äußeren erneut selektiert werden. Diese Funktionalität ist wie "abgeschalten" und meine CPU Auslastung liegt dann bei fast 100%.

Wies funktioniert das nicht, d.h. warum ist keine äußere Zeile selektierbar.

Für deine Hilfe schon ein großes Dankeschön.

Anbei der "neue" Quellcode:
Code:
import java.awt.Component;
import java.util.EventObject;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;


public class MainWindow extends JFrame {

	public MainWindow()
	{
	super();
	this.setSize(300, 300);
	
	
	
	TableModel dataModel = new AbstractTableModel() 
			{
          	public int getColumnCount() { return 3; }
          	public int getRowCount() { return 4;}
          	public Object getValueAt(int row, int col) 
          		{ 
          		if(col==2) {
          					JTable tab = new JTable(3,1); 
          					tab.setModel(new AbstractTableModel() 
          					{
          					  	public int getColumnCount() { return 1; }
          					  	public int getRowCount() { return 3;}
          					  	public Object getValueAt(int row, int col) 
          					  		{ 
          					  		return new Integer(row*col);
          					  		}
          					  	
          					  
          						
          					  	// cell which contains a JTable must be editable
          					  	// as well as isCellEditable in the assigned cell editor
          					  	public boolean isCellEditable(int rowIndex,int colIndex)
          					  	{
          					  	return true;	
          					  	}
          					  	
          					  	
          						});
          					return tab;
          					}
          		return new Integer(row*col);
          		}
			
          	// cell which contains a JTable must be editable
          	// as well as isCellEditable in the assigned cell editor
          	public boolean isCellEditable(int rowIndex,int colIndex)
          	{
          	if(colIndex==2) return true;	
          	return false;	
          	}
          	
          	// returns for the column which contains a JTable the
    		// JTable class, so that the view
    		// can assign a appropriate renderer
    		public Class<?> getColumnClass(int columnIndex) {
    				if(columnIndex == 2) return JTable.class;
    				return super.getColumnClass(columnIndex);
    			}
			
			};
	
			
			
      JTable table = new JTable(dataModel);
      JScrollPane scrollpane = new JScrollPane(table);
    
    TableColumn tc = table.getColumnModel().getColumn(2);  
  	tc.setCellRenderer(new TableCellRenderer()
	{

		@Override
		public Component getTableCellRendererComponent(JTable table,
				Object value, boolean isSelected, boolean hasFocus,
				int row, int column) {
			// TODO Auto-generated method stub
			JTable tab = (JTable) value;
			table.setRowHeight(row, 100);
			return tab;
		}
	
	});
  	
  	tc.setCellEditor(new TableCellEditor() 
  		{

  			@Override
  			public boolean isCellEditable(EventObject arg0) {
			// TODO Auto-generated method stub
  				return true;
  			}

			@Override
			public Component getTableCellEditorComponent(JTable table,
					Object value, boolean isSelected, int row, int column) {
				return (JTable) value;
			}

			@Override
			public void addCellEditorListener(CellEditorListener arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void cancelCellEditing() {
				// TODO Auto-generated method stub
				
			}

			@Override
			public Object getCellEditorValue() {
				// TODO Auto-generated method stub
				return new JTable(3,1);
			}

			
			@Override
			public void removeCellEditorListener(CellEditorListener arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public boolean shouldSelectCell(EventObject arg0) {
				// TODO Auto-generated method stub
				return false;
			}

			@Override
			public boolean stopCellEditing() {
				// TODO Auto-generated method stub
				return false;
			}
  		
  		}
  	);
		
		
  

      
      this.getContentPane().add(scrollpane); 

	}
	
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Swing Jtable extra spalte AWT, Swing, JavaFX & SWT 6
J JTable filtern nach einer Spalte AWT, Swing, JavaFX & SWT 2
G JTable als fixierte Spalte in Scrollpane scrollt nicht mit... AWT, Swing, JavaFX & SWT 1
Bartertown JTable - Verschiedene Komponenten in einer Spalte unterbringen AWT, Swing, JavaFX & SWT 3
S Swing JTable zusätzliche Spalte mit einer Checkbox einfügen AWT, Swing, JavaFX & SWT 7
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
S JTable Spalte "normale" Breite? AWT, Swing, JavaFX & SWT 5
F JTable soll mit Buttons befüllt werden, aber nicht in jede Zelle einer Spalte AWT, Swing, JavaFX & SWT 3
GianaSisters Swing ComboBox im jTable (in bestimmter Zelle nicht über die ganze Spalte) AWT, Swing, JavaFX & SWT 4
N Swing JTable: Objekttyp einer Spalte nachträglich ändern AWT, Swing, JavaFX & SWT 6
A Swing Spalte in JTable ausblenden AWT, Swing, JavaFX & SWT 4
T JTable mit Renderer sortiert die gerenderte Spalte nicht richtig AWT, Swing, JavaFX & SWT 2
E Spalte in JTable löschen AWT, Swing, JavaFX & SWT 4
B JTable, Spalte nicht verschiebbar AWT, Swing, JavaFX & SWT 2
R JTable immer nur die letzte Spalte markiert.... AWT, Swing, JavaFX & SWT 4
S Swing JTable: in erster Spalte Image darstellen AWT, Swing, JavaFX & SWT 30
T JTable - Einzelne Spalte nicht sortieren? AWT, Swing, JavaFX & SWT 2
V JTable: Sortierung einer Spalte zum Programmstart? AWT, Swing, JavaFX & SWT 3
G JTable warten bis Spalte verschoben wurde AWT, Swing, JavaFX & SWT 2
R JTable: Zellen einer Spalte unterschiedlich befüllen AWT, Swing, JavaFX & SWT 2
G Alle Werte einer Spalte in JTable zusammenrechnen AWT, Swing, JavaFX & SWT 2
J in JTable ganze Spalte editierbar machen AWT, Swing, JavaFX & SWT 17
J JTable ganze Spalte sperren AWT, Swing, JavaFX & SWT 6
C Spalte aus JTable löschen AWT, Swing, JavaFX & SWT 8
mabe83 Kontinuierlich verbleibende Zeit in JTable Spalte anzeigen AWT, Swing, JavaFX & SWT 2
P JTable:Sortierung nach der Zeit/Spalte mit Calendar-Objekten AWT, Swing, JavaFX & SWT 2
D JTable 1. Spalte fixieren AWT, Swing, JavaFX & SWT 3
E JTable nur die erste Spalte auswählbar? AWT, Swing, JavaFX & SWT 4
B JTable - Wechsel der Spalte bei TAB, RETURN oder Maus AWT, Swing, JavaFX & SWT 5
S Hintergrundfarbe in einer Spalte der JTable verändern AWT, Swing, JavaFX & SWT 3
A JTable: Zeit in Spalte ausgeben AWT, Swing, JavaFX & SWT 2
F JTable Spalte sortieren mit lauter JComboboxen ? AWT, Swing, JavaFX & SWT 15
S Checkbox oder String in JTable-Spalte AWT, Swing, JavaFX & SWT 4
U JTable Position der Spalte abfragen AWT, Swing, JavaFX & SWT 7
E JTable; Zeilen der ersten Spalte definieren? AWT, Swing, JavaFX & SWT 4
H JTable Text aus mehreren Zellen in einer Spalte kopieren? AWT, Swing, JavaFX & SWT 3
L Falsche Zeile gelöscht nach Spalte Sortierung in JTable AWT, Swing, JavaFX & SWT 2
L JTable (DefaultTableModel) nach Spalte sortieren-TableSorter AWT, Swing, JavaFX & SWT 2
S JTable Spalte hinzufügen AWT, Swing, JavaFX & SWT 3
J Spalte in JTable aus- und wieder einblenden AWT, Swing, JavaFX & SWT 10
Student JTable - eine fixe Spalte, der Rest scrollbar AWT, Swing, JavaFX & SWT 18
V JTable mit mehreren Componenten in einer Spalte ? AWT, Swing, JavaFX & SWT 6
D JTable Spalte unsichtbar machen AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G jTable - getSelectedRow() AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
M JTABLE / wie oft wurde gewürfelt. AWT, Swing, JavaFX & SWT 1
F JTable vergrößern AWT, Swing, JavaFX & SWT 2
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
B JTable Zellen zusammenfügen AWT, Swing, JavaFX & SWT 3
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
MadMax2506 Swing JTable lädt sehr lange AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
R Swing JTable und Spaltenausrichtung AWT, Swing, JavaFX & SWT 8
G JTable füllen AWT, Swing, JavaFX & SWT 1
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
J Datensatz in jTable ausgeben AWT, Swing, JavaFX & SWT 3
M Swing Automatischer Editorstart in JTable-Zelle AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
M JTable.setDefaultRenderer(...) greift nicht AWT, Swing, JavaFX & SWT 0
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
VfL_Freak Swing Einzelne Zeile in jTable selektieren klappt nicht AWT, Swing, JavaFX & SWT 7
N AWT jTable CellRenderer AWT, Swing, JavaFX & SWT 6
T Swing JTable valueChanged datensatz löschen AWT, Swing, JavaFX & SWT 1
0 Swing JTable aus anderer Klasse updaten AWT, Swing, JavaFX & SWT 5
S Jtable defaultRenderer wohin damit ? AWT, Swing, JavaFX & SWT 23
T Swing JTable / FocusListener AWT, Swing, JavaFX & SWT 0
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
T Swing Double Click bei Buttons in JTable AWT, Swing, JavaFX & SWT 9
J addRow bei JTable AWT, Swing, JavaFX & SWT 6
M Jtable gibt -1 wert bei selectedRow und Column AWT, Swing, JavaFX & SWT 3
Meeresgott Swing JTable AWT, Swing, JavaFX & SWT 4
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben