table - combobox

Status
Nicht offen für weitere Antworten.

steff3

Bekanntes Mitglied
ich habe mich soweit vorgekämpft, dass ich in einer spalte comboboxen habe und die anderen editieren kann und das auch ins model übernommen wird
nur auf die combobox wird nicht reagiert

der "editor"
Code:
import java.awt.Component;
import java.util.EventObject;

import javax.swing.AbstractCellEditor;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;

public class ComboCellEditor extends AbstractCellEditor implements TableCellEditor{ 

	private static final long serialVersionUID = 4919078372264293695L;

	public Object getCellEditorValue () { 
		
        return combo.getSelectedItem(); 
    } 
	
	
	private DefaultTableModel model = new DefaultTableModel();
	
	public ComboCellEditor(DefaultTableModel model){
		
		this.model = model;
		     
	   }
		
    public Component getTableCellEditorComponent (JTable table, Object value, boolean isSelected, int row, int column) { 
        if(column == 4)
        {
    	combo.setSelectedItem(value); 
        return combo; 
        }
        return lb1;
        
    } 
    public boolean isCellEditable(int row, int column ) {
		
		if(column == 0){
		
		return false;
		}
		else 
			return true;
	}

   
    private JComboBox combo = new JComboBox(new String[] {"m", "w"});
    private JLabel lb1 = new JLabel("1");

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

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

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

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

	public void cancelCellEditing() {
		fireEditingCanceled();
		
	}
	public boolean stopCellEditing() {
		 fireEditingStopped(); 
	      return true;
	}

}

das model
Code:
import java.util.ArrayList;
import java.util.Vector;

import javax.swing.JComboBox;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

public class SampleTableModel extends DefaultTableModel{

	
	private static final long serialVersionUID = 1L;
	
	 
	public SampleTableModel(){
		
		 	}

	public void loadData(TConnection con) {
		
				
		
		addColumn("SchülerID");
		addColumn("Name");
		addColumn("Passwort");
		addColumn("Klasse");
		addColumn("gender");
		
		Vector v = new Vector(5,1);
		
		Object ID = null;
		for (int i = 0; i < con.getAllStudentIDs().size(); i++) {
			
			ID = con.getAllStudentIDs().elementAt(i);
			v.add(ID);
			v.addElement(con.getStudentName(Integer.parseInt((String) ID)));
			v.addElement(con.getPassword(Integer.parseInt((String) ID)));
			v.addElement(con.getClass(Integer.parseInt((String) ID)));
			v.addElement(con.getGender(con.getGenderIDFromStudent(Integer.parseInt((String) ID))));
			
			
			
			al.add(v);
			
			v = new Vector(5,1);
		
			isCellEditable(i, 0);
			
			
		}
		for (int i = 0; i < al.size(); i++) {
			
			addRow((Vector) al.get(i));
		}				

	}
	public void loadData(TConnection con, int year) {
		
		addColumn("SchülerID");
		addColumn("Name");
		addColumn("Passwort");
		addColumn("Klasse");
		addColumn("gender");
		
		Vector v = new Vector(5,1);
		
		Object ID = null;
		for (int i = 0; i < con.getAllStudentsFromYear(year).size(); i++) {
			
			ID = con.getAllStudentsFromYear(year).elementAt(i);
			v.add(ID);
			v.addElement(con.getStudentName(Integer.parseInt((String) ID)));
			v.addElement(con.getPassword(Integer.parseInt((String) ID)));
			v.addElement(con.getClass(Integer.parseInt((String) ID)));
			v.addElement(con.getGender(con.getGenderIDFromStudent(Integer.parseInt((String) ID))));
			
			al.add(v);
			
			v = new Vector(5,1);
			
		}
		for (int i = 0; i < al.size(); i++) {
			
			addRow((Vector) al.get(i));
			
		}				

	}
	
	public void writeData(TConnection con,TableModel model){
		
		this.con = con;
				
		for (int i = 0; i < model.getRowCount(); i++) {
			
			con.setStudentName(Integer.parseInt((String) model.getValueAt(i, 0)), (String)model.getValueAt(i,1));
			con.setPassword(Integer.parseInt((String) model.getValueAt(i, 0)), (String)model.getValueAt(i,2));
			con.setClass(Integer.parseInt((String) model.getValueAt(i, 0)), (String)model.getValueAt(i,3));
		}
		
	}
	
	 public boolean isCellEditable(int row, int column ) {
			
			if(column == 0){
			
			return false;
			}
			else 
				return true;
		}
	 	 
	 public Class getColumnClass(int columnIndex) { 
         if( columnIndex == 4 ) 
            return JComboBox.class; 
         else 
            return String.class; 
      }
		   
	 
	 public void setValueAt(Object aValue, int rowIndex, int columnIndex) { 
	      if( columnIndex == 4 ) 
	    	  System.out.println("combo"); // das müsste ich ja mindestens in der konsole sehen
	      else
	    	  System.out.println("dasdas");
	        
	      
	   }

	
	private ArrayList al = new ArrayList();
	
	private TConnection con = new TConnection();
	
	
		
}

ich hoffe mir kann jemand erklären wie ich die verbindung herstellen muss
 

steff3

Bekanntes Mitglied
André Uhres hat gesagt.:
http://www.codeguru.com/java/articles/162.shtml

eigentlich wollte ich jetzt nicht wieder alles neuschreiben

die frage dich ich eingentlich noch habe ist wie
Code:
public void setValueAt(Object aValue, int rowIndex, int columnIndex) { 
		
	     if( columnIndex == 4 ) 
	    	  System.out.println("combo");
	      else{
	    	
	    	  System.out.println("normal");
                    System.out.println(aValue); // das ist der richtige wert - der neu eingetragen wurde von mir
	    	
	      }
	    	
	   }
	 public Object getValueAt(int arg0, int arg1) {
		 
		
		
		
	}

die daten wieder in das model kommen
also da sind sie schon... nur das einfügen ins model klappt nicht so
 

steff3

Bekanntes Mitglied
André Uhres hat gesagt.:
steff3 hat gesagt.:
..wie die daten wieder in das model kommen..
javax.swing.table.DefaultTableModel#setValueAt

jaha, die habe ich ja gefunden ...

und ich bekomme ja die daten ...aValue
aber wo ist das model? model.setValueAt()? - das liegt in einer anderen klasse und kann schlecht die row und column kennen
und in der DefaultTableModel klasse kommt der wert ja an, aber this.setValueAt in

public void setValueAt(Object aValue, int rowIndex, int columnIndex){ }

ergibt ja eine endlosschleife
 

André Uhres

Top Contributor
D.h. daß DefaultTableModel schon die setValueAt Methode implementiert hat.
Das musst du nicht nochmal coden :wink:
 

steff3

Bekanntes Mitglied
André Uhres hat gesagt.:
D.h. daß DefaultTableModel schon die setValueAt Methode implementiert hat.
Das musst du nicht nochmal coden :wink:

mh ich dachte wegen der combobox muss man das selber machen

naja funktioniert trotzdem nicht :(

mein log:

event
m
getCell m
event
w
getCell w

also wurde am ende w abgeschickt und lau java ist auch eine insel sollten die daten direkt durch die
public Object getCellEditorValue () Operation in das model

aber schon wenn ich in die nächste combobox klicke ist wieder der alte wert ausgewählt

Code:
public class ComboCellEditor extends AbstractCellEditor  implements TableCellEditor{ 

   private static final long serialVersionUID = 4919078372264293695L; 

   public Object getCellEditorValue () { 
	   
	  
      System.out.println("getCell " + se);
      //combo.setSelectedItem(se);
       return se;
       
    } 
   private Object se = new Object();
    
   public ComboCellEditor(){ 
	   
      combo.addActionListener(new ActionListener(){

		public void actionPerformed(ActionEvent arg0) {
			System.out.println("event");
			se = combo.getSelectedItem();
			System.out.println(se);
			
			getCellEditorValue();
			
		}
    	  
      });
            
      } 
       
    public Component getTableCellEditorComponent (JTable table, Object value, boolean isSelected, int row, int column) { 
        if(column == 4) 
        { 
      // se = value;
       combo.setSelectedItem(se);
      //System.out.println("getTableCellEditorComponent " + se);
       return combo;
        }
		return null; 
        
        
    }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Default table model aktualisieren AWT, Swing, JavaFX & SWT 7
J Anbindung Textfeldklasse an Table funktioniert nicht AWT, Swing, JavaFX & SWT 3
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
S JavaFX Boolean ändern Table View AWT, Swing, JavaFX & SWT 14
B JavaFX JavaFX Table gespeichertes Wert auswählen/anvisieren AWT, Swing, JavaFX & SWT 3
C TableModel zugehörige Table ermitteln AWT, Swing, JavaFX & SWT 3
T Table Renderer AWT, Swing, JavaFX & SWT 2
T Default Table wird nicht angezeigt AWT, Swing, JavaFX & SWT 15
E JavaFX Von der Table-Cell zur Row AWT, Swing, JavaFX & SWT 0
A JavaFX Table Delete Row AWT, Swing, JavaFX & SWT 5
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
D JavaFX Table Filter AWT, Swing, JavaFX & SWT 4
R Swing JTable : Header der Spalten ergänzen mit caption (wie bei html-table) AWT, Swing, JavaFX & SWT 2
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
J JTabbedPane: table in new tab: tooltip benutzt die column-widths von table in erstem geöffneten tab AWT, Swing, JavaFX & SWT 17
G Border der Komponente bei Table CellRenderer überschreiben AWT, Swing, JavaFX & SWT 0
M MouseListener auf table oder scrollPane AWT, Swing, JavaFX & SWT 11
T SWT checkbox in table AWT, Swing, JavaFX & SWT 6
C JTable Drag and Drop von Zeilen innerhalb einer Table AWT, Swing, JavaFX & SWT 2
Z JavaFX Table mit MenuButton AWT, Swing, JavaFX & SWT 6
T SWT Table (mit Spinner Spalte) Daten auslesen AWT, Swing, JavaFX & SWT 4
E extended Swing Table AWT, Swing, JavaFX & SWT 2
J Einträge aus Table löschen ohne Exception AWT, Swing, JavaFX & SWT 6
T Table-Zeilen mit Thread einfärben AWT, Swing, JavaFX & SWT 15
E SWT Popupmenu auf der Überschrift eines swt.widgets.Table verhindern? AWT, Swing, JavaFX & SWT 3
Nicklas2751 Table View zeigt keinen Inhalt nur leere Zeilen AWT, Swing, JavaFX & SWT 2
reibi SWT SWT - Table AWT, Swing, JavaFX & SWT 8
A Swing JButton in einer Table Cell AWT, Swing, JavaFX & SWT 9
lumo SWT JFace Databinding +Custom Table AWT, Swing, JavaFX & SWT 2
M SWT - Table deselecten AWT, Swing, JavaFX & SWT 2
R SWT | Table | Zeilenkopf AWT, Swing, JavaFX & SWT 2
M SWT Table disabled und Scrollbar enabled AWT, Swing, JavaFX & SWT 11
C [SWT] Widget Table verliert nach Sortierung farbige / eingefärbter Background / Zellen AWT, Swing, JavaFX & SWT 3
L Inhalt einer table löschen AWT, Swing, JavaFX & SWT 2
L Jbutton in table AWT, Swing, JavaFX & SWT 2
lumo SWT Table Selection Color +Focus Out AWT, Swing, JavaFX & SWT 14
S SWT Maximum an Items in Table? AWT, Swing, JavaFX & SWT 2
F SWT table refresh per Thread AWT, Swing, JavaFX & SWT 2
Q SWT Mindetsgröße für Table AWT, Swing, JavaFX & SWT 7
1 Swing manual resize table column to min size AWT, Swing, JavaFX & SWT 2
hdi SWT SWT Table: 2 kleine Probleme AWT, Swing, JavaFX & SWT 4
S SWT Table Größen verändern AWT, Swing, JavaFX & SWT 10
lumo SWT Table und Klassen AWT, Swing, JavaFX & SWT 14
lumo SWT Table CellEditor - knifflig AWT, Swing, JavaFX & SWT 35
M SWT Table mit Columns und Items AWT, Swing, JavaFX & SWT 3
L Java Table AWT, Swing, JavaFX & SWT 4
F Swing J(X)Table Spalten umsortieren NUR im View (Wie finde ich eine Spalte nach Name?) AWT, Swing, JavaFX & SWT 3
A SWT Table mit Bildern und Checkboxes AWT, Swing, JavaFX & SWT 4
A SWT Table hat keine Scrollbar AWT, Swing, JavaFX & SWT 12
A SWT Table clearAll() und zurücksetzen. AWT, Swing, JavaFX & SWT 3
K SWT Table Modell / Datenmodell AWT, Swing, JavaFX & SWT 14
S Table oder TableModel so ueberschreiben, dass Columns minimale Breite haben? AWT, Swing, JavaFX & SWT 2
T SWT - Table Events AWT, Swing, JavaFX & SWT 3
B SWT - Drag & Drop innerhalb einer Table AWT, Swing, JavaFX & SWT 3
T Fokus auf CB in Table mit beliebiger Taste AWT, Swing, JavaFX & SWT 12
S swt table mit checkboxen: wie nachträglich im code setzen? AWT, Swing, JavaFX & SWT 6
S Seltsam: SWT Table zeigt keine Scrollbar an AWT, Swing, JavaFX & SWT 12
G SWT-Table sortieren AWT, Swing, JavaFX & SWT 12
T Input-Check bei Textfeldern in Table AWT, Swing, JavaFX & SWT 5
G SWT Table Controll AWT, Swing, JavaFX & SWT 7
L SWT-Table: Datum ausgeben? AWT, Swing, JavaFX & SWT 5
G Table in SWT AWT, Swing, JavaFX & SWT 2
S Table Row per Drag and Drop in andere Table schieben? AWT, Swing, JavaFX & SWT 14
S SWT Table - Wie Columns hinzufügen / entfernen AWT, Swing, JavaFX & SWT 3
K javax.swing.table.TableRowSorter AWT, Swing, JavaFX & SWT 13
I JComboBox in Table AWT, Swing, JavaFX & SWT 4
G wo wird die table mit daten gefüllt? oô AWT, Swing, JavaFX & SWT 4
S SWT Drag&Drop / Table AWT, Swing, JavaFX & SWT 9
E JTable-während der Einfügezeit der Zellen in die Table AWT, Swing, JavaFX & SWT 2
D Selection SWT Table AWT, Swing, JavaFX & SWT 5
D SWT Table AWT, Swing, JavaFX & SWT 5
P Table Layout remove()? AWT, Swing, JavaFX & SWT 2
W Zeile in Table (SWT) selektieren und auslesen AWT, Swing, JavaFX & SWT 4
G Dringend ! SWT-Table übernimmt Änderung nicht AWT, Swing, JavaFX & SWT 2
L Multiline Table AWT, Swing, JavaFX & SWT 3
R SWT: Icons im Table vor den Einträgen AWT, Swing, JavaFX & SWT 3
T mit rechter maustaste Table row selektieren AWT, Swing, JavaFX & SWT 2
F Zeilenhöhe bei SWT Table AWT, Swing, JavaFX & SWT 3
S Nochmal Spaltenbriete im Table AWT, Swing, JavaFX & SWT 2
G mal wieder table. AWT, Swing, JavaFX & SWT 3
V SWT Table mit SWT.CHECK AWT, Swing, JavaFX & SWT 2
P SWT table updaten AWT, Swing, JavaFX & SWT 7
S Frage zu Table(Column)Model AWT, Swing, JavaFX & SWT 3
J ScrollPanel mit 2 Table`s AWT, Swing, JavaFX & SWT 5
J Table Model AWT, Swing, JavaFX & SWT 2
J Abstract Table Model AWT, Swing, JavaFX & SWT 7
T in einer Table soll jede zweite Zeile markiert werden AWT, Swing, JavaFX & SWT 3
E Inhalt einer Zelle eine Table in ein TextField bekommen AWT, Swing, JavaFX & SWT 24
W Element aus comboBox mit observableList löschen AWT, Swing, JavaFX & SWT 3
T Combobox mit Autocomplete-Funktion AWT, Swing, JavaFX & SWT 7
J Eingaben aus Textfield & ComboBox speichern und in ComboBox wieder ausgeben AWT, Swing, JavaFX & SWT 3
N Promt Text der Combobox AWT, Swing, JavaFX & SWT 0
Doppel JavaFX ComboBox AWT, Swing, JavaFX & SWT 5
P JavaFX ClassCastException bei ComboBox.getValue AWT, Swing, JavaFX & SWT 4
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Combobox bild anklicken AWT, Swing, JavaFX & SWT 2
L JavaFX Wiederspenstige ComboBox AWT, Swing, JavaFX & SWT 0
P Combobox und Enum AWT, Swing, JavaFX & SWT 3
L ComboBox Wert automatisch auswählen AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben