JToggleButton double click

0

Witam

Chodzi dokładnie o JRadioButton który siedzi w klasie implementującej TableCellEditor, czyli po ludzku w komórkach tabeli są przyciski i jak zrobić aby ten JRadioButton nie reagował na pojedyncze kliknięcie tylko na podwójne.

Coś takiego naklepałem i utknąłem

public class RadioCellEditor extends AbstractCellEditor implements TableCellEditor {

   JRadioButton radioButton;

   public RadioCellEditor() {
      radioButton = new JRadioButton();

      /* CO TUTAJ DODAC ABY ZWYKLE KLIKNIECIE NIE ZMIENIALO STANU PRZYCISKU? */

      radioButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent evt) {
                if(evt.getClickCount() == 2)
                    stopCellEditing();
                else
                    cancelCellEditing();
            }
        });
   }

   public Component getTableCellEditorComponent(
      /* tutaj naklpalem wiecej ale nie bede zaciemnial kodu */

   public Object getCellEditorValue(
      if(radioButton.isSelected())
         return new Date();
      return null;
   }
}

Tak wiec pomocy

Pozdrawiam

0

setEditable(false)

0

Jeżeli dobrze zrozumiałem podwójne kliknięcie ma powodować jego zaznaczenie lub odznaczenie.
czyli:

public void mouseClicked(MouseEvent evt) {
	if(evt.getClickCount() == 2) {
		radioButton.setSelected(!radioButton.isSelected());
		stopCellEditing();
	} else {
		cancelCellEditing();
	}
}
0

setEditable(false)

Nie ma to jak proste rozwiązania, które działają. Dzięki.
Da się równie prosto sprawić, aby ten button wyglądał jak edytowalny?

Dla potomnych: fragment kodu else cancelCellEditing(); jest zbędny bo z nim nie działa podwójne kliknięcie gdy komórka tabeli jest zaznaczona.

0

Przekombinowałem próbując rozwiązać to we wcześniejszy sposób.
Wystarczyło przesłonić metodę isCellEditable

public class MyCellEditor extends AbstractCellEditor implements TableCellEditor {

    //.........

    @Override
    public boolean isCellEditable(EventObject evt) {
        if(evt instanceof MouseEvent)
            if( ((MouseEvent)evt).getClickCount() != 2 ) return false;
        return super.isCellEditable(evt);
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1