如何将JRadioButton添加到JTable中的组中

如何将JRadioButton添加到JTable中的组中

我已将单选按钮添加到JTable使用渲染器和编辑器。我也为此创建了小组。我无法实现排他性(只有一个单选按钮应该选择)使用这一原则。请看我的代码下面,并感谢您的答复。

呈现器和编辑器类:

class RadioButtonRenderer implements TableCellRenderer {

    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        if (value == null)
            return null;
        return (Component) value;
    }}class RadioButtonEditor extends DefaultCellEditor implements ItemListener {
    private JRadioButton button;

    public RadioButtonEditor(JCheckBox checkBox) {
        super(checkBox);
    }

    public Component getTableCellEditorComponent(JTable table, Object value,
            boolean isSelected, int row, int column) {
        if (value == null)
            return null;
        button = (JRadioButton) value;
        button.addItemListener(this);
        return (Component) value;
    }

    public Object getCellEditorValue() {
        button.removeItemListener(this);
        return button;
    }

    public void itemStateChanged(ItemEvent e) {
        super.fireEditingStopped();
    }}

这就是准备数据和分组的地方:

private void displayPhoneListShow(Person person) {

    DefaultTableModel dm = new DefaultTableModel() {
        @Override
        public boolean isCellEditable(int row, int column) {
            return true;
        }
    };

    Object[] objects = new Object[3];
    Object[] tableColumnNamesPhone = new Object[3];

    tableColumnNamesPhone[0] = "Select";
    tableColumnNamesPhone[1] = "Phone Number";
    tableColumnNamesPhone[2] = "Preferred";

我仍然无法达到这个结果。我也尝试过添加ButtonGroup group = new ButtonGroup()作为类变量,也是RadioButtonRenderer类并向此组添加按钮。但结果却无动于衷。

请建议。



不负相思意
浏览 433回答 2
2回答

一只名叫tom的猫

挑剔:(A)最好不要传递表的呈现器查找/配置-而是使用getCellRenderer和PreareRenderer b)-即使您坚持手动执行,混合视图和模型坐标可能会失败(询问表的值,而不是模型)c)可能遗漏了一些明显的东西,但是:为什么是2d数组?直接改变逻辑和最大限度?
打开App,查看更多内容
随时随地看视频慕课网APP