Buongiorno ragazzi,
Ho un problema stupido ma è da Venerdì che mi ha bloccato.
nella mia JTable ho messo un JCheckBox che permetterà a tempo debito per indicare a chi verrà spedita una mail ed a chi no.
Però dopo averlo inserito si conporta in maniera mutuamente esclusiva ovvero se clicco uno l'altro che era a true sarà messo a falso e ed il primo non viene portato a true deve essere cliccato per una seconda volta. e questo comportamente viene sempre ripetuto
qui diu seguito posto il codice utilizzato
Inizializzazione tabella e cella che conterrà il CheckBox
Editor per JCheckBoxcodice:public void ModelingTable(Object [][] dati_t, int rows, int columns, final Object[] dLastUpdating){ // Creo il modello della tabella e l'applico ad un istanza di Jtable tableModel=null; TableColumn column=null; DefaultTableColumnModel columnModel = new DefaultTableColumnModel(); for(int i = 0; i < columns; i++) { // modello attributi colonna singola tableModel = new DefaultTableModel1(dati_t, tableHeaders1); column = new TableColumn(i, widths1[i]); column.setHeaderValue(tableHeaders1[i]); columnModel.addColumn(column); } // TableModel tableModel = new DefaultTableModel(tableData, tableHeaders); jTable1 = new JTable(tableModel, columnModel); for(int i = 0; i < columns; i++) { jTable1.getColumn("Send_Mail").setCellRenderer(new CheckBoxRenderer()); jTable1.getColumn("Send_Mail").setCellEditor(new CheckBoxEditor(dati_t)); } ...segue
Renderizzazione per il JCheckBoxcodice:import java.awt.*; import javax.swing.*; import javax.swing.table.*; public class CheckBoxEditor extends AbstractCellEditor implements TableCellEditor { /** * */ private static final long serialVersionUID = -7138255194415617187L; private JCheckBox jc; private Object [][] dati; public CheckBoxEditor(Object [][] dati) { jc = new JCheckBox(); this.dati=dati; } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { System.out.println(); if (isSelected) { jc.setForeground(table.getSelectionForeground()); jc.setBackground(table.getSelectionBackground()); } else{ jc.setForeground(table.getForeground()); jc.setBackground(table.getBackground()); } return jc; } public Object getCellEditorValue() { return ((JCheckBox)jc).isSelected(); } public boolean stopCellEditing() { return super.stopCellEditing(); } protected void fireEditingStopped() { super.fireEditingStopped(); } }
codice:import java.awt.Component; import javax.swing.*; import javax.swing.table.*; public class CheckBoxRenderer extends JCheckBox implements TableCellRenderer { /** * */ private static final long serialVersionUID = 5266080252364837753L; public CheckBoxRenderer() { setHorizontalAlignment(JLabel.CENTER); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (isSelected) { setForeground(table.getSelectionForeground()); //super.setBackground(table.getSelectionBackground()); setBackground(table.getSelectionBackground()); } else { setForeground(table.getForeground()); setBackground(table.getBackground()); } setSelected((value != null && ((Boolean) value).booleanValue())); return this; } }
Grazie mille x ogni aiuto/consiglio.
Ciao

 
			
			 
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando