我克利里做错了什么。我的猜测是该组件,但这里的问题。 这是我的单元格渲染器:

public class WildcardCellRenderer implements TableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {

        JTextField c = new JTextField();
        c.setBorder(javax.swing.BorderFactory.createEmptyBorder());

        if(vColIndex == 2){
            if((Integer)value == 0) c.setText("No") ;
            else c.setText("Si");
        } else c.setText(value.toString());

        return c;
    }

}

这就是我如何设置的事情在我的面板:

    this.table.setDefaultRenderer(Object.class, new WildcardCellRenderer() );

的问题是,当我设置此渲染器的行变成不可选择。我应该使用不同的组件来显示我需要显示?基本上我显示0/1的值作为无/有值。

有帮助吗?

解决方案

您需要采取“isSelected”值考虑在内,并相应地设置的背景颜色是这样的:

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

我把这个从我ListCellRenderers之一,但我认为它的工作原理与TableCellRenderers相同。

哦,顺便说一句,你可以重复使用文本字段,没有必要为每一个小区的新的文本框,所以你可以使文本字段中输入类的成员和方法里面只是改变的东西在你的文本字段如内容/颜色,并将其返回。这样,你不上一大桌一百万文本字段实例结束了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top