برای اضافه کردن check box به jtable اول باید یک کلاس بسازیم ما اسم کلاس رو CheckBoxRenderer میگذاریم و کدهای زیر رو توش مینویسیم
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
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); setBorderPainted(true); setOpaque(true); checkBox.setHorizontalAlignment(SwingConstants.CENTER); 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(table, 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.valueOf(value.toString()).booleanValue())); if (row%2 == 0){ c.setBackground(Color.WHITE); } else { c.setBackground(Color.LIGHT_GRAY); } return this; } } |
بعد توی قسمتی که میخواهیم دیتاهای دیتابیس رو فراخوانی و داخل تیبل بریزیم کدهای زیر رو می نویسیم کدهای زیر فیلد های
id , CostCentersName , Status
رو از دیتابیس فراخوانی میکنن و Status که مقدار صفر و یک داره رو تبدیل به true و false میکنن و توی ستون سوم به جای true و false چک باکس قرار میدن و اگر مقدار true باشه چک باکس تیک میخوره و اگر مقدار false باشه چک باکس تیک نمیخوره
|
1 2 3 4 5 6 |
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); |
توی این خط اط دستوراتتون میتونید بگید کدوم ستون رو میخواین چک باکس اضافه کنید
|
1 |
datatable.getColumnModel().getColumn(2).setCellRen derer(checkBoxRenderer); |
به عبارتی توی پرانتز getColumn هر عددی رو بنویسید مشخص کننده اون ستون هستش و از اونجا که شماره ستون ها از صفر شروع میشه وقتی من نوشتم 2 یعنی ستون سوم چک باکس میشه
قبل از تبدیل به چک باکس

بعد از تبدیل به چک باکس نتیجه این کد رو توی عکس مشاهده میکنید





