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(); } } }

, sper che qualche esperto possa darmi una mano.
Rispondi quotando