Häkchen erscheint nicht bei anklicken von Checkbox in JTable

Status
Nicht offen für weitere Antworten.

Fleedo

Neues Mitglied
Hi Leute,

erstmal Kompliment an dieses Top Forum. Hab dadurch schon einige Probleme gelöst.

Hier mein jetziges:
Habe ein Tabellmodel geschrieben gemäß den FAQs. Mein Problem is nur dass die Werte im boolean array print geändert werden aber in der CheckBox in der Tabelle nicht angezeigt werden.

Code:

Code:
import javax.swing.JButton;
import javax.swing.table.AbstractTableModel;

public class TravelDetailsTableModel extends AbstractTableModel {

	private boolean[] print = new boolean[] { false, false, false, false,
			false, false };

	public int getColumnCount() { // Setzt die Anzahl der Spalten
		return 6;
	}

	public int getRowCount() { // Setzt die Anzahl der Zeilen
		return 1;
	}

	public boolean getPrint(int index) {
		return print[index];
	}
	public Object getValueAt(int colIndex, int rowIndex) { // Liefert die Werte der einzelnen Zellen
		if (colIndex == 4 && rowIndex == 0) {
			return new Boolean(print[rowIndex]);
		} else
			return null;
	}
	public String getColumnName(int columnIndex) { // Setzt die
		// Spaltenüberschriften
		switch (columnIndex) {
		case 0:
			return "Reisename";
		case 1:
			return "Restplätze";
		case 2:
			return "normaler Verkaufspreis";
		case 3:
			return "minimaler Verkaufspreis";
		case 4:
			return "Drucken";
		case 5:
			return "Buchen";
		default:
			return null;
		}
	}

	public Class getColumnClass(int columnIndex) { // Liefert die Klasse der
		// einzelnen Zellen
		switch (columnIndex) {
		case 0:
			return String.class;
		case 1:
			return String.class;
		case 2:
			return String.class;
		case 3:
			return String.class;
		case 4:
			return Boolean.class;
		case 5:
			return JButton.class;
		default:
			return null;
		}
	}

	public boolean isCellEditable(int rowIndex, int columnIndex) { // Definiert
		// welche
		// Zellen
		// editierbar
		// sind
		if (columnIndex == 4 || columnIndex == 5)
			return true;
		else
			return false;
	}

	public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
		if (columnIndex == 4 && rowIndex == 0) {
			print[rowIndex] = ((Boolean) aValue).booleanValue();
			getValueAt(columnIndex, rowIndex);
		}
	}
Das TabelModel ist passend gesetzt in der Main. Funktioniert auch einwandfrei. Nur die Checkboxen ned.
Main:
Code:
   public static void main( String[] args ){
      // Unser TableModel (siehe unten)
      Model model = new Model();
     
      // Das JTable initialisieren
      JTable table = new JTable( model );
           
      JFrame frame = new JFrame( "Demo" );
      frame.getContentPane().add( new JScrollPane( table ) );
     
      frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      frame.pack();
      frame.setVisible( true );

Buttonrender und CellEdittor für Splate 5 hab ich bewußt weggelassen.

THX für eure Hilfe
Gruß Fleedo
 
Keine Ahnung was du da überhaupt vorhast.
Normal braucht man nicht viel mehr zu coden als zum Beispiel sowas:
Code:
   class MyTableModel extends DefaultTableModel{
        public MyTableModel(Object[][] data, String[] titles){
            super(data, titles);
        }
        Class[] types = new Class [] {Boolean.class};
        public Class getColumnClass(int columnIndex) {
            return types [columnIndex];
        }
    }
Und die Checkboxen funzen automatisch so wie sie sollen.
 
Wurde im Chat behandelt - die "getValueAt"-Methode ist falsch implementiert (die beiden Argumente sind vertauscht).
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben