TableModel und Columnmodel - Zusammenspiel?

Status
Nicht offen für weitere Antworten.
Hallöle,

hier mein Problem:

ich hab en Tablemodel und en Columnmodel. Das Tabelmodel funktioniert allein. Mit dem Colummodel (es werden beim drücken von Radiobuttons neue Spalten eingeblendet bzw ausgeblendet) werden alle Werte der ersten Spalte in ALLE Spalten gezeichnet. Ich habe herausgefunden dass im Tablemodel bei public Object getValueAt(int rowIndex, int columnIndex) der columnIndex immer 0 ist. Dabei habe ich einmal 3 und einmal 4 Spalten. Die Spalten füge ich im ColumnModel mit addColumn hinzu bzw sie werden mit removeColumn gelöscht. Die Spaltenüberschriften aus dem Colummodel werden aber richtig angezeigt...nur der Inhalt der Spalten ist falsch...

Ich dachte, wenn ich im ColumnModel Spalten hinzufüge oder lösche dann bekommt doch das Tablemodel davon was mit oder? Muss ich da manuell was zur Kommunikation betragen?

hier mal ein bißchen code
Code:
public class VerbindungColumnModel extends DefaultTableColumnModel {

	/**
	 * 
	 */
	private VerbindungTableModel verbindungTableModel = null;
	private static final long serialVersionUID = 1L;
	private final String[] COLNAMES = {"Geräteanschlüsse", "an Raumanschluss", "Gerät / Raum", "Gerät","Anschlüsse", "Raumanschlüsse" };
	private  TableColumn[] COLUMNS= new TableColumn[6];

	public VerbindungColumnModel() {
		for (int i = 0; i < COLNAMES.length; ++i) {
			COLUMNS[i] = new TableColumn();
			COLUMNS[i].setHeaderValue(COLNAMES[i]);
			COLUMNS[i].setCellRenderer(new CellRendererVerbindungen());
		}
		setColumnGeraet();
	}

	public void setColumnGeraet() {
		removeAllColumn();
		this.addColumn(COLUMNS[0]);
		this.addColumn(COLUMNS[1]);
		this.addColumn(COLUMNS[2]);
		this.addColumn(COLUMNS[4]);

	}

	public void setColumnRaum() {
		removeAllColumn();
		this.addColumn(COLUMNS[5]);
		this.addColumn(COLUMNS[3]);
		this.addColumn(COLUMNS[4]);

	}

	private void removeAllColumn() {
		int tempCount = this.getColumnCount();

		for (int i = 0; i < tempCount; i++) {
			this.removeColumn(this.getColumn(0));
		}
	}

	public ObservableVariableListenerImple ObservableVariableListenerImple() {
		return (new ObservableVariableListenerImple());
	}

	public class ObservableVariableListenerImple implements
			ObservableVariableListener<Boolean> {

		public void variableChange(ObservableVariable<Boolean> observableVariable) {


			if (observableVariable.getVariable()) {
				setColumnGeraet();
			} else {
				setColumnRaum();
			}

		}
	}
}

und noch mehr vom TableModel mit Kürzungen...
Code:
public class VerbindungTableModel extends AbstractTableModel {


	public int getColumnCount() {
		System.out.println("getColumnCount() " );
		return isGeraet() ? 4 : 3;
	}
	
    public boolean isCellEditable(int rowIndex, int columnIndex){
    	return true;
    }

	public int getRowCount() {
		if (isGeraet() && appi.getObservableVCurrentGeraetTab3().getVariable() != null){
			return appi.getVerwGeraeteAnschluesseTab3().size();
		}
		else if (!isGeraet() && appi.getObservableVCurrentRaumTab3().getVariable() != null) {
			return appi.getVerwRaumAnschluesseTab3().size();
		}
		else if ((appi.getObservableVCurrentRaumTab3().getVariable() != null) && (appi.getObservableVCurrentGeraetTab3().getVariable() != null)){
			return 0;
		}
		else return 0;
	}

	public Object getValueAt(int rowIndex, int columnIndex) {
		
		System.out.println("columnIndex "  + columnIndex);

		// in Auswahl Geraet gewaehlt
		if (isGeraet()) {

			GeraeteAnschluss geraeteAnschluss = appi.getVerwGeraeteAnschluesseTab3().get(rowIndex);
			AnschlussVerbindung anschlussVerbindung = findeAnschlussverbindungVomGeraeteAnschluss(geraeteAnschluss);
			

			switch (columnIndex) {
			case 0:
				// Geraeteanschluss aus VerwGeraeteAnschluesseTab3
				return geraeteAnschluss;
			case 1:
				// welche Spalten sind in gefundener Anschlussverbindung belegt,
				// daraus Verbindung
				// zu Raum oder zu Geraet ableiten
				if (anschlussVerbindung != null && anschlussVerbindung.getZuRaumanId() != 0) {
					return true;
				}
				return false;
			case 2:
				// wie case 1 aber mit suche der Raumes bzw des Geraetes aus der
				// am Anfang ermittelten anschlussverbindung
				if (anschlussVerbindung != null && anschlussVerbindung.getZuRaumanId() != 0) {
					return findeRaumZuAnschlussVerb(anschlussVerbindung);
				} else if (anschlussVerbindung != null) {
					return findeGeraetZuAnschlussVerb(anschlussVerbindung);
				}
				return null;
			case 3:
				// wie case 1 aber mit suche der Raumanschlusses bzw des
				// Geraeteanschlusses
				// aus der am Anfang ermittelten anschlussverbindung
				if (anschlussVerbindung != null && anschlussVerbindung.getZuRaumanId() != 0) {
					return findeRaumAnschlussZuAnschlussVerb(anschlussVerbindung);
				} else if (anschlussVerbindung != null) {
					return findeGeraetAnschlussZuAnschlussVerb(anschlussVerbindung);
				}
				return null;
			default:
				return null;
			}
		}
		// in Auswahl Raum gewaehlt
		else {
			int raum1oder2 = 2;
			RaumAnschluss raumAnschluss = appi.getVerwRaumAnschluesseTab3().get(rowIndex);
			if (raumAnschluss.getRaum1Id() == appi.getCurrentRaumTab3().getId()){
				raum1oder2 = 1;
			}
			AnschlussVerbindung anschlussVerbindung = findeAnschlussverbindungVomRaumAnschluss(raumAnschluss, raum1oder2);

			switch (columnIndex) {
			case 0:
				// Geraeteanschluss aus VerwGeraeteAnschluesseTab3
				return raumAnschluss;

			case 1:
				// Suche des Geraetes aus der am Anfang ermittelten
				// anschlussverbindung
				return findeGeraetZuGeraeteAnschluss(findeGeraetAnschlussZuAnschlussVerb(anschlussVerbindung));

			case 2:
				// Suche des Geraeteanschlusses aus der am Anfang ermittelten
				// anschlussverbindung
				return findeGeraetAnschlussZuAnschlussVerb(anschlussVerbindung);
			default:
				return null;
			}
		}

	}
	
	

	
    @Override
    public Class<?> getColumnClass(int col) throws IllegalArgumentException {
    	
    	if (isGeraet()) {
			switch (col) {
			case 0:
				return String.class;
			case 1:
				return Boolean.class;
			case 2:
				return Geraet.class;
			case 3:
				return GeraeteAnschluss.class;
			}
		} else {
			switch (col) {
			case 0:
				return String.class;
			case 1:
				return Raum.class;
			case 2:
				return RaumAnschluss.class;
			}
		}
		throw new IllegalArgumentException("getColumnClass: ungültige Spaltennummer");
	}
	
	





	public void setVerbindungColumnModel(VerbindungColumnModel verbindungColumnModel) {
		this.verbindungColumnModel = verbindungColumnModel;
	}
}

Danke für Tipps
 
B

Beni

Gast
Ruf mal anstelle des Default-Konstruktors "TableColumn()" den Konstruktor mit dem Argument "int modelIndex" auf.

Also in Zeile 14:
Code:
         COLUMNS[i] = new TableColumn( index );
... wobei "index" bei dir wohl gerade "i" ist.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
C TableModel zugehörige Table ermitteln AWT, Swing, JavaFX & SWT 3
E Eigenes TableModel für ArrayList<String[]> AWT, Swing, JavaFX & SWT 5
W Neues TableModel und JTable wird nicht refreshed AWT, Swing, JavaFX & SWT 3
D Swing JTable TableModel + RowCount AWT, Swing, JavaFX & SWT 18
JAVAnnik Problem mit TableModel AWT, Swing, JavaFX & SWT 3
S Swing Setzen von TableModel liefert NullPointer AWT, Swing, JavaFX & SWT 6
S TableModel Header wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
K verständnissproblem mit TableModel AWT, Swing, JavaFX & SWT 2
K zwei TableModel AWT, Swing, JavaFX & SWT 9
N Swing Eintrag in JTable an dessen TableModel weiterreichen AWT, Swing, JavaFX & SWT 3
hdi Swing Komisches Problem mit TableModel & setAutoCreateRowSorter AWT, Swing, JavaFX & SWT 2
E Swing TableModel fireTableDataChanged führt zu IndexOutOfBoundsException AWT, Swing, JavaFX & SWT 9
F Tablemodel zu mehreren Tabellen AWT, Swing, JavaFX & SWT 6
K JTable +TableModel --> Anpassung der Tabellengröße (Zeilenanzahl) AWT, Swing, JavaFX & SWT 3
K TableModel mit Daten aus Datenbank füllen AWT, Swing, JavaFX & SWT 7
K TableModel Daten übergeben AWT, Swing, JavaFX & SWT 9
L Klick auf JTable -> EditorPane manipulieren, Fragen zu TableModel AWT, Swing, JavaFX & SWT 9
X Swing Daten aus Vector ins TableModel ?? AWT, Swing, JavaFX & SWT 12
E JTable und tablemodel Verständnisproblem AWT, Swing, JavaFX & SWT 3
C Kann Konstruktor von eigenem TableModel nicht nutzen AWT, Swing, JavaFX & SWT 2
D eigenes Tablemodel, Zeile löschen ArrayindexOOB excp AWT, Swing, JavaFX & SWT 4
P Eigenes TableModel abgeleitet von AbstractTableModel (neue rows nicht sichtbar) AWT, Swing, JavaFX & SWT 6
S Table oder TableModel so ueberschreiben, dass Columns minimale Breite haben? AWT, Swing, JavaFX & SWT 2
R JTable - TableModel AWT, Swing, JavaFX & SWT 6
D JTable - TableColumnModel - TableModel AWT, Swing, JavaFX & SWT 3
S JTable nimmt TableModel nicht an AWT, Swing, JavaFX & SWT 4
D Mehrere CheckBoxen im TableModel wechselseitig ausschließen AWT, Swing, JavaFX & SWT 5
G TableModel mit anderen Spalten AWT, Swing, JavaFX & SWT 4
G JTable - TableModel aus ArrayList AWT, Swing, JavaFX & SWT 8
D TableModel + Daten bearbeiten + Daten zurückschreiben AWT, Swing, JavaFX & SWT 9
A JTable, eigenes TableModel und dessen Objekte AWT, Swing, JavaFX & SWT 4
G Frage zu JTable und TableModel AWT, Swing, JavaFX & SWT 4
O TableModel AWT, Swing, JavaFX & SWT 12
V Vector->TableModel->RowSorter:Bei Markierung Index im AWT, Swing, JavaFX & SWT 2
S Daten aus editierbaren TableModel lesen AWT, Swing, JavaFX & SWT 7
F TableModel Spaltenkoepfe benamen, wie? AWT, Swing, JavaFX & SWT 2
F Wie MouseListener bei TableModel anmelden? AWT, Swing, JavaFX & SWT 3
G JTable, TableModel und CellRenderer AWT, Swing, JavaFX & SWT 3
R DataVector bei TableModel - Class Cast Exception AWT, Swing, JavaFX & SWT 9
N TableModel mit CheckBox? AWT, Swing, JavaFX & SWT 5
J Tablemodel AWT, Swing, JavaFX & SWT 2
G jTable + ScrollPane (+ TableModel) AWT, Swing, JavaFX & SWT 7
D invokeLate bei änderung im TableModel? AWT, Swing, JavaFX & SWT 4
G TableModel von JTable wieder entfernen AWT, Swing, JavaFX & SWT 10
G TableModel auswerten und in Datei schreiben AWT, Swing, JavaFX & SWT 3
P JTable TableModel JFreeReport AWT, Swing, JavaFX & SWT 4
T anlegen einer jTable mit TableModel AWT, Swing, JavaFX & SWT 3
B Swing JTable custom ColumnModel Problem AWT, Swing, JavaFX & SWT 5
vandread Swing Probleme mit jTextField im zusammenspiel mit einem Einblendeffekt (inkl. KSKB) AWT, Swing, JavaFX & SWT 6
R Swing Designfrage - Zusammenspiel Model / View AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen


Oben