2013-08-01 4 views
-1

У меня JComboBox в моем столе. Если пользователь выбрал «Другие» из ComboBox, мне нужно скрыть столбец номер 3 в таблице.Actionlisterner изменить всю строку

Код

 final TableColumn col5 = jTable1.getColumnModel().getColumn(4); 
     col5.setPreferredWidth(150); 
     final String EDIT = "edit"; 
     String[] options = new String[]{"Font Issue", "Text Issue", "Image Issue", "AI Issue", "Others"}; 
     JComboBox combo1 = new JComboBox(options); 
     JComboBox combo2 = new JComboBox(options); 
     col5.setCellEditor(new DefaultCellEditor(combo1)); 
     col5.setCellRenderer(new ComboBoxRenderer(combo2)); 
     combo2.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       String newSelection = col5.getCellEditor().getCellEditorValue().toString(); 
       String strOthersRemark = ""; 
       if (newSelection.equalsIgnoreCase("others")) { 
        jTable1.removeColumn(jTable1.getColumnModel().getColumn(3)); 
       } 
      } 
     }); 

код работает нормально, но с одной небольшой проблемой. Когда пользователь выбирает другие его удалить весь столбец вместо этого row.For пример

Row|Column1 | Column2 | Column3 | Column4 | 
1 | Test11 | Test12 | Test13 | Test14 | 
2 | Test21 | Test22 | Test23 | Test24 | 
3 | Test31 | Test32 | Test33 | Others | 

Когда пользователь выбирает column4, как Others он должен скрыть Test33, а не весь Column3. Мой код удаляет весь Column3. Что я должен делать, если я хочу, чтобы скрыть Test33 только

+0

то, что вы делаете ** неправильно ** (как уже отмечалось в одном из своих предыдущих вопросов) - это с ума, чтобы действовать на состояние визуализатор (который в лучшем случае непредсказуем) – kleopatra

+0

Я не понял. Можете ли вы уточнить, чтобы я мог исправить свой код. –

+0

это так же просто, как: не слушать компоненты _rendering_, не обращаться к компонентам _editing_ - оба не имеют смысла. Никакое преступление не означало, но если вы этого не понимаете, пришло время обновиться на Основах Swing ;-) – kleopatra

ответ

2

Вы удаления колонки:

jTable1.removeColumn(jTable1.getColumnModel().getColumn(3)); 

Вместо этого вы должны изменить значение в определенной ячейке.

Используйте этот метод вместо: table.setValueAt(). Java документ: setValueAt

В вашем примере:

jTable1.setValueAt("", 3, 3); 
+0

Могу ли я получить код образца? –

+1

добавил пример, но учтите, что вам все равно придется читать javadoc, чтобы узнать java – Tala