2016-03-22 33 views
0

Benim Jtable Benim değerleri Checkbox olarak görüntülenen bir sütun var. Ben JtableTableCellRenderer eklendi ve şu kodu var:JTable Hücre Boole Veri Türü

TableCellRenderer tableCellBoolean = new DefaultTableCellRenderer() { 
     Boolean UserEnterValuse = new Boolean(false); 

     public Component getTableCellRendererComponent(JTable table, 
       Boolean value, boolean isSelected, boolean hasFocus, 
       int row, int column) { 
      if (value instanceof Boolean) { 
       UserEnterValuse = Boolean.valueOf(value.toString()); 
       System.out.print(table.getCellRenderer(row, column)); 
       //InstallmentDate.get 
       table.setValueAt(UserEnterValuse, row, column); 

      } 
      return super.getTableCellRendererComponent(table, value, isSelected, 
        hasFocus, row, column); 
     } 
    }; 

Ben de eklemiş setCellEditor ama Jtable hücreye tıkladığınızda o zaman bana Checkbox ve seçerek veya hücrede değerleri değiştirdikten sonra gösterilmesini sağlamak seçim türüne bağlı olarak doğru veya yanlış gösterir, ancak bana Checkbox göstermez.

TableCellRenderer'u eklemezseniz ve değerleri Jtable hücresine ayarladığımda hata verir: Object can not cast to Boolean Type.

+1

, bu kod örneklerinden – mKorbel

+1

Örnek çalışma için, nasıl masalar (model, Oluşturucu ve editör hakkında parçaları) kullanmak için Oracle öğretici okumak için daha fazla bilgi için, varsayılan olarak API'ler uygulanan Boole denetim kutuları ile JTable: [Örnek] (http://stackoverflow.com/questions/7391877/how-to-add-checkboxes-to-jtable-swing) –

cevap

1

Her şeyden önce yanlış yöntem imzasını kullanırsınız.

// wrong 
public Component getTableCellRendererComponent(JTable table, 
      Boolean value, boolean isSelected, boolean hasFocus, 
      int row, int column) { 

// correct 
public Component getTableCellRendererComponent(JTable table, 
      Object value, boolean isSelected, boolean hasFocus, 
      int row, int column) { 

Görüntülenen onay kutularını görüntülemek için, oluşturucunuzdaki onay kutusunu genişletmeniz gerekir. İşte Boolean değerleri için doğru oluşturucu (JTable kaynağından biraz değiştirilmiş işleyici). Eğer Oluşturucu ve Editor ile rahatsız neden

public class BooleanRenderer extends JCheckBox implements TableCellRenderer { 
    private static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); 

    public BooleanRenderer() { 
     super(); 
     setHorizontalAlignment(JLabel.CENTER); 
     setBorderPainted(true); 
    } 

    public Component getTableCellRendererComponent(JTable table, Object value, 
                boolean isSelected, boolean hasFocus, int row, int column) { 
     if (isSelected) { 
      setForeground(table.getSelectionForeground()); 
      super.setBackground(table.getSelectionBackground()); 
     } 
     else { 
      setForeground(table.getForeground()); 
      setBackground(table.getBackground()); 
     } 
     setSelected((value != null && ((Boolean)value).booleanValue())); 

     if (hasFocus) { 
      setBorder(UIManager.getBorder("Table.focusCellHighlightBorder")); 
     } else { 
      setBorder(noFocusBorder); 
     } 

     return this; 
    } 
}