请问,怎么用DefaultCellEditor类来给JTABLE里面的单元格添加jcombobox

Ram_ningbi 2009-12-03 11:19:20
如题:最好给代码和注释。我要的是在同一列,不同行可以添加不同的JCOMBOBOX控件,当然了,你们也可以告诉我在同列不同行怎么添加不同的控件,
...全文
225 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfangla 2009-12-03
  • 打赏
  • 举报
回复
用Render. 下面一个例子虽然不是combobox, 但是checkbox,,, 其实原理一样:

private class CheckBoxRenderer extends DefaultTableCellRenderer
{
public CheckBoxRenderer()
{
setNameForAutoTest();
}

@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column)
{
Component res = super.getTableCellRendererComponent(table,
value,
isSelected,
hasFocus,
row,
column);

//当前组件为JLabel类型,才可设置渲染器
if (res instanceof JLabel)
{
//当前鼠标选中此行
if (isSelected)
{
_checkBox.setSelected(true);
// setForeground(table.getSelectionForeground());
// setBackground(table.getSelectionBackground());
}
if (_showCheckBox && (Boolean) value)
{
_checkBox.setSelected(true);
// setForeground(table.getSelectionForeground());
// setBackground(table.getSelectionBackground());
}
//未选中的情况
else
{
_checkBox.setSelected(false);
// _checkBox.setBackground(UIManager.getColor("CheckBox.background"));
}
/* 设置表格的灰化状态 */
if (!IsmTable.this.isEnabled())
{
_checkBox.setOpaque(true);
_checkBox.setEnabled(false);
// setBackground(disablebackground);
}
else
{
_checkBox.setOpaque(false);
_checkBox.setEnabled(true);
// setBackground(Color.WHITE);
}

_checkBox.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
return _checkBox;
}
return res;
}

//表格灰化背景色
//private Color disablebackground = new Color(238, 238, 238);

//复选框
private JCheckBox _checkBox = new JCheckBox();
}
zhuzeitou 2009-12-03
  • 打赏
  • 举报
回复
gentalguo 2009-12-03
  • 打赏
  • 举报
回复
这问题说来,简单也可,复杂也可。
可以指定一列,甚至一个单元格;
可以根据取得的数据类型绑定编辑器

而且JComboBox类型的编辑器又在swing中有默认的提供,这个很简单。
虽说两者本质并无太大不同,但是既然涉及到了编辑,自然牵涉到保存数据的类型问题。你要哪种?

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧