PDA

View Full Version : چک باکس در jtable هنگام فراخوانی از دیتابیس



cnmeysam
چهارشنبه 11 تیر 1399, 06:21 صبح
سلام من یه تیبل توی دیتابیس دارم که اون رو توی jtable ریختم









String sql = "select `id`,`CostCentersName`, case when `Status` = 1 then true else false end AS Status from costcenters limit 0,10 ";
Clas.classtable obj = new Clas.classtable();
DefaultTableModel dtm = obj.Query(sql);
datatable.setModel(dtm);
CheckBoxRenderer checkBoxRenderer = new CheckBoxRenderer();
datatable.getColumnModel().getColumn(2).setCellRen derer(checkBoxRenderer);



کلاس استفاده شده



import java.awt.Color;
import java.awt.Component;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JTable;




import java.awt.Color;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;








public class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {








public CheckBoxRenderer() {
JCheckBox checkBox = new JCheckBox();
setHorizontalAlignment(JLabel.CENTER);
checkBox.setHorizontalAlignment(SwingConstants.CEN TER);
checkBox.setBackground( Color.blue);
}
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();




public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component c = DEFAULT_RENDERER.getTableCellRendererComponent(tab le, value, isSelected, hasFocus, row, column);








if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground() );
setBackground(table.getSelectionBackground());
return c;
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}


setSelected((value != null && ((Boolean) value).booleanValue()));








return this;
}
}











اما میخوام جای true و false توی جدول چک باکس بذاره ولی بهم این ارور رو میده


Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean





کسی میتونه کمکم کنه این مشکل رو حل کنم؟


151886

cnmeysam
چهارشنبه 11 تیر 1399, 10:18 صبح
نیست یاری دهنده ای که مرا اری کند؟:لبخند:

cnmeysam
پنج شنبه 12 تیر 1399, 11:35 صبح
مشکل حل شد:
فقط باید بجای :


setSelected((value != null && ((Boolean) value).booleanValue()));

از کد زیر توی کلاس استفاده بشه


setSelected(value != null && (Boolean.valueOf(value.toString()).booleanValue()) );
اینم سورسش تو کیت هاب
(https://github.com/cnmeysam/java/tree/master/jtablecheckbox)https://github.com/cnmeysam/java/tree/master/jtablecheckbox





151889