18. maj 2005 - 14:55
												Der er
									5 kommentarer													og
					1 løsning									
									
		 
		
			
CellEditor på individuelle tabel-celler
			Hej kloge hoveder!
Jeg skal kunne bruge forskellige CellEditor's på mine celler, da de hver skal ha' en Combobox med deres egne værdisæt.
Hvis jeg kunne ha' brugt den samme CellEditor på en hel kolonne kunne jeg ha' brugt TableColumn.setCellEditor(...), og troede at der ville findes en tilsvarende TableCell hvorpå jeg kunne ha' gjort det samme, men nej - TableCell findes ikke.
Er her nogen som kan fortælle mig hvordan det gøres eller henvise til et eksempel?
Hilsen
hangaard
					
		
	 
		
		
			Du laver din egen klasse som extender JTable, her overrider du getCellEditor() returnerer det du nu ønsker - har lavet et eksempel så simpelt som jeg kunne.
Det er i den sidste kolonne det sker.
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
public class Different_TableCell_Editor extends javax.swing.JFrame {
    
    public Different_TableCell_Editor() {
        initComponents();
    }
    
    private void initComponents() {
        scroll = new javax.swing.JScrollPane();
        spec_table = new Special_Table_Editor();
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        spec_table.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        scroll.setViewportView(spec_table);
        getContentPane().add(scroll, java.awt.BorderLayout.CENTER);
        pack();
    }
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Different_TableCell_Editor().setVisible(true);
            }
        });
    }
    private javax.swing.JScrollPane scroll;
    private Special_Table_Editor spec_table;   
}
class Special_Table_Editor extends JTable{
    
    public Special_Table_Editor() {
        super();
    }
    
    public TableCellEditor getCellEditor(int row, int column){
        if(row == 0 && column == 3)
            return new DefaultCellEditor(new JComboBox(ar_1));
        if(row == 1 && column == 3)
            return new DefaultCellEditor(new JComboBox(ar_2));
        if(row == 2 && column == 3)
            return new DefaultCellEditor(new JComboBox(ar_3));
        if(row == 3 && column == 3)
            return new DefaultCellEditor(new JComboBox(ar_4));
        
        return super.getCellEditor(row, column);
    }
    
    private String[] ar_1 = new String[]{"Abe", "Hund", "Kat"};
    private String[] ar_2 = new String[]{"Sten", "Grus", "Sand"};
    private String[] ar_3 = new String[]{"Øl", "Vand", "Vin"};
    private String[] ar_4 = new String[]{"10", "100", "1000"};
}