Salve vorrei presentare un problema con cui lotto da giorni
, sper che qualche esperto possa darmi una mano.
Ho creato una tabella contenente 6 colonne di tipo boolean che vorrei visualizzate tramite dei checkbox ed una colonna di tipo string: in tutto 7 colonne.
Ovviamente vorrei che quando premo su un checkbox riesca a sapere quale sia la colonna e la riga dove ho premuto ed il valore corrente del checkbox.
Ho creato come da teoria le classi:
class ProfileCheckBoxRenderer extends JCheckBox implements TableCellRenderer
class ProfileCheckBoxEditor extends AbstractCellEditor implements TableCellEditor
e le assegno ad ogni colonna.
Sembra tutto ok in visualizzazione ma la gestione dei click e della reazione che vorrei non funziona!!
Ripeto il problema: Vorrei che quando premo su un checkbox riesca a sapere quale sia la colonna e la riga dove ho premuto ed il valore corrente del checkbox.
Invio il codice della classe che gestisce la tabella richiamabile con: getTable_Profile() e contenuta in SwPanelUserProfileConfiguration
codice:
class ProfileCheckBoxRenderer extends JCheckBox implements TableCellRenderer
{
public ProfileCheckBoxRenderer()
{
// Some look and feels might ignore this ....
setHorizontalTextPosition(SwingConstants.CENTER);
setHorizontalAlignment(SwingConstants.CENTER);
setPreferredSize(new Dimension(90, 23));
setRolloverEnabled(true);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
//setText(Messages.getString("Requests.ConfigurationCancelRequest.Button_Email"));
// getModel().setRollover(hasFocus);
return this;
}
/*
* The following methods are overridden to be "empty" for
* performance reasons. If you want to understand better why, please
* read:
*
* http://java.sun.com/javase/6/docs/ap...x/swing/table/
* DefaultTableCellRenderer.html#override
*/
public void invalidate()
{
}
public void validate()
{
}
public void revalidate()
{
}
public void repaint()
{
}
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue)
{
}
public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
{
}
}
/*
* This class extends the default editor for table and tree cells. This
* editor is use for the button details column.
*/
class ProfileCheckBoxEditor extends AbstractCellEditor implements TableCellEditor
{
private JCheckBox checkbox;
public ProfileCheckBoxEditor()
{
checkbox = new InternalCheckbox();
}
public void addActionListener(ActionListener l)
{
// Forwards the add to the button.
checkbox.addActionListener(l);
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
{
return checkbox;
}
public Object getCellEditorValue()
{
return checkbox.getText();
}
private class InternalCheckbox extends JCheckBox
{
protected void fireActionPerformed(ActionEvent event)
{
// First of all, fires all actionPerformed.
super.fireActionPerformed(event);
setHorizontalTextPosition(SwingConstants.CENTER);
setHorizontalAlignment(SwingConstants.CENTER);
setPreferredSize(new Dimension(90, 23));
// Then stops cell editing.
fireEditingStopped();
}
}
}