2016-10-06 6 views
2

У меня есть JTable, где у меня есть пара JCheckBoxes. Я инициализирую JCheckBoxes и другие значения ячеек из базы данных. Моя проблема в том, что когда я нажимаю на JCheckBox для проверки или снятия флажка, они ничего не делают.Как правильно установить редактируемый флажок внутри ячейки JTable в приложении Java Swing?

Когда я дважды щелкнул, редактируемая ячейка JTable активируется и показывает значение JCheckBox, которое равно 0 или 1. Я могу отредактировать ячейку с 0 ИЛИ 1, и когда я сохраню, она сохраняет запись и загружает этот флажок с помощью отредактированное значение.

После сниппет, чтобы показать, как я загрузки и создания компоненты JCheckBox:

class TextBoxNewCellRenderer extends JPanel implements TableCellRenderer { 

::: 
public Component getTableCellRendererComponent(

case 10: //Active 
       switch (column) { 
        case 0: 
         this.add(lblStar); 
         this.add(new JLabel(value.toString(), JLabel.LEFT)); 
         break; 
        case 1: 
         checkBox = new JCheckBox(); 
         checkBox.setToolTipText("Set 0 OR 1"); 
         checkBox.setEnabled(true); 
         if(value.toString().equals("1")) 
          checkBox.setSelected(true); 
         if(value.toString().equals("0")) 
          checkBox.setSelected(false); 
         this.add(checkBox); 
         break; 
::: 

return this; 
    } 
} 

В моем renderTable методе я Override следующие isCellEditable:

DefaultTableModel model = new DefaultTableModel() { 
      @Override 
      public boolean isCellEditable(int row, int column) { 

        switch (row){ 
         case 10: //Active 
         switch (column) { 
          case 0: 
           return false; 
          case 1: 
           return true; 
          case 2: 
           return false; 
          case 3: 
           return false; 
          default: 
           return false; 
         } 
        default: 
       return false; 
       } 
      } 
     }; 

Вот картина JTable, когда я дважды нажмите на JCheckBoxe:

enter image description here

В любом случае я могу проверить или снять флажок JCheckBoxes одним щелчком мыши? Я не хочу обновлять JTable-ячейку с 0 ИЛИ 1, чтобы проверить или снять флажок. Пожалуйста помоги.

Cheers.

+1

Лучший способ получить нас в полной мере и быстро понять вашу проблему будет, если вы должны были создать и опубликовать [минимальную примерную программу] (http://stackoverflow.com/help/mcve), небольшую, но полную которая имеет только необходимый код, чтобы продемонстрировать вашу проблему, которую мы можем скопировать, вставить, скомпилировать и запустить без изменений. –

ответ

2

Когда я нажал дважды, редактируемые JTable клетки становятся активными и показывает значение JCheckBox которое 0 или 1.

Если вы хотите, визуализатор по умолчанию/редактор для использования, то вы должны быть хранение Boolean.TRUE или Boolean.FALSE в TableModel.

Затем вам необходимо переопределить метод getColumnClass()TableModel для возврата Boolean.class.

Для получения дополнительной информации и рабочих примеров ознакомьтесь с разделом из учебника Swing по телефону How to Use Tables.

+0

Большое спасибо за ваш ответ. Как вы можете видеть, я работаю со столом, где мне нужно указать индекс строки и столбца. getColumnClass() принимает только столбец в качестве параметра. Есть ли какой-либо рабочий образец, похожий на мой сценарий. Спасибо за кучу заранее. Приветствия. –

+0

@SadequerRahman, JTable предназначен для тех же данных в каждой строке. Я бы посоветовал вам не использовать JTable для формы, отображаемой в вашем вопросе. Просто создайте панель с помощью JLabels, JCheckboxes и JTextFields. Возможно, вы можете создать JTable с 4 строками и 2 столбцами для ваших «разрешенных данных». Если вы действительно хотите играть с разными данными в том же столбце, эта ссылка может дать вам несколько идей: http://stackoverflow.com/questions/33216409/class-specific-renderer-component-not-called/33218124#33218124 – camickr

 Смежные вопросы

  • Нет связанных вопросов^_^