问题如下,希望高手帮忙:
有一个表,有4列若干行数据,现想显示这些数据为一个jtable,每行前面加一个单选按钮,用来选择这个表中的某一行,
保存的时候,判断单选哪个被选中,取得选中行的4列数据,保存在另一个表里,该怎么实现呢
有一个表,有4列若干行数据,现想显示这些数据为一个jtable,每行前面加一个单选按钮,用来选择这个表中的某一行,
保存的时候,判断单选哪个被选中,取得选中行的4列数据,保存在另一个表里,该怎么实现呢
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;/**
* <p>Title: 表格勾选框编辑器</p>
* <p>Description: 字符串为"0"和"1"值用JCheckBoxEditor编辑</p>
*/public class BooleanCellEditor extends AbstractCellEditor implements
TableCellEditor, ActionListener
{
/** 是否选中 */
JCheckBox boxSfxz = null;
public BooleanCellEditor()
{
boxSfxz = new JCheckBox();
boxSfxz.setHorizontalAlignment(JCheckBox.CENTER);
boxSfxz.addActionListener(this);
} public BooleanCellEditor(ActionListener l)
{
boxSfxz = new JCheckBox();
boxSfxz.setHorizontalAlignment(JCheckBox.CENTER);
boxSfxz.addActionListener(l);
} /** 获取编辑框的值 */
public Object getCellEditorValue()
{
return boxSfxz.isSelected() ? "1" : "0";
} /** 选中和取消选中时的动作 */
public void actionPerformed(ActionEvent e)
{} /** 选中修改时返回的编辑器 */
public Component getTableCellEditorComponent(JTable table,
Object value,
boolean isSelected,
int row,
int column)
{
/** 设置初始值 */
if (value.equals("1"))
{
boxSfxz.setSelected(true);
}
else if (value.equals("0")||value.equals(""))
{
boxSfxz.setSelected(false);
}
return boxSfxz;
}
}
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;/**
* <p>Title: 表格勾选框绘制器</p>
* <p>Description: 字符串为"0"和"1"值用JCheckBoxRenderer绘制</p>
*/public class BooleanCellRenderer extends JCheckBox implements TableCellRenderer
{
public BooleanCellRenderer()
{
super();
setHorizontalAlignment(JCheckBox.CENTER);
setOpaque(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());
}
if (value.equals("0")||value.equals(""))
{
this.setSelected(false);
}
else if (value.equals("1"))
{
this.setSelected(true);
}
return this;
}
} /** CheckBox Editor */
table.getColumnModel().getColumn(10).setCellEditor(
new BooleanCellEditor()
);
/** CheckBox Renderer */
table.getColumnModel().getColumn(10).setCellRenderer(
new BooleanCellRenderer()
);//判断是否被选中即判断table该单元格值为0还是1
注意对象的使用,一列最好使用一个editor和renderer