解决方案 »

  1.   

    写过一个与这界面一样的程序。我只知道有CheckBox,不知道能不能其他的。不过应该可以通过逻辑实现单选啊,另外点击后的那一列本来不就是个单选吗?或是我没看懂。
      

  2.   

    写一个Js function  ,当用户选中的时候就将确定变为修改就可以了这个是用js事件完成的,挺简单的
      

  3.   

    如果用RadioButton,不能这么简单的处理,需要点击任意的RadioButton后这一列的其他RadioButton都要设置为unchecked状态,即要遍历这一列的所有单元格,不知是修改celllRenderer和cellEditor就可以的,因为还需要处理逻辑。预期十倍起赔,并且可以被对方随便到家里“搬彩电”.
    楼主这水平就敢这么干,以后肯定是个做大事的料。
      

  4.   

    lymoge大哥!!小弟就是想做一个”让用户能够看到明显的提示文字“,并且能够进行”对应的文字所在位置“的选择,给出下一步的用户意志的程序响应,的功能.
    小弟希望大哥相助!!
    公孙大哥!!小弟希望哥哥能够为小弟做一下您的方案的“代码相助”,小弟想把这个功能,“直接从哥哥这里借来”.
            什么报答的话,小弟就不多扯了,都在日日夜夜的玩命中了!!
      

  5.   

    From:http://stackoverflow.com/questions/11259579/adding-jradiobutton-into-jtableimport java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.beans.PropertyChangeEvent;
    import java.beans.PropertyChangeListener;
    import java.beans.PropertyChangeSupport;
    import java.util.ArrayList;
    import java.util.List;import javax.swing.AbstractCellEditor;
    import javax.swing.JFrame;
    import javax.swing.JRadioButton;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.TableCellEditor;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.TableColumn;public class TestTable {    public class RadioButtonCellEditorRenderer extends AbstractCellEditor implements TableCellRenderer, TableCellEditor, ActionListener {        private JRadioButton radioButton;        public RadioButtonCellEditorRenderer() {
                this.radioButton = new JRadioButton();
                radioButton.addActionListener(this);
                radioButton.setOpaque(false);
            }        @Override
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                radioButton.setSelected(Boolean.TRUE.equals(value));
                return radioButton;
            }        @Override
            public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
                radioButton.setSelected(Boolean.TRUE.equals(value));
                return radioButton;
            }        @Override
            public void actionPerformed(ActionEvent e) {
                stopCellEditing();
            }        @Override
            public Object getCellEditorValue() {
                return radioButton.isSelected();
            }    }    private JFrame f;
        private JTable table;    private class MyObjectManager {
            private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
            private List<MyObject> objects = new ArrayList<TestTable.MyObject>();        public void addObject(MyObject object) {
                objects.add(object);
                object.setManager(this);
                propertyChangeSupport.firePropertyChange("objects", null, object);
            }        public List<MyObject> getObjects() {
                return objects;
            }        public void setAsSelected(MyObject myObject) {
                for (MyObject o : objects) {
                    o.setSelected(myObject == o);
                }
            }
        }    private class MyObject {
            private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);        private MyObjectManager manager;        private String value;        private boolean selected;        public MyObject(String value) {
                this.value = value;
            }        public PropertyChangeSupport getPropertyChangeSupport() {
                return propertyChangeSupport;
            }        public String getValue() {
                return value;
            }        public void setValue(String value) {
                this.value = value;
                propertyChangeSupport.firePropertyChange("value", null, value);
            }        public MyObjectManager getManager() {
                return manager;
            }        public void setManager(MyObjectManager manager) {
                this.manager = manager;
                propertyChangeSupport.firePropertyChange("manager", null, manager);
            }        public boolean isSelected() {
                return selected;
            }        public void setSelected(boolean selected) {
                if (this.selected != selected) {
                    this.selected = selected;
                    if (selected) {
                        manager.setAsSelected(this);
                    }
                    propertyChangeSupport.firePropertyChange("selected", !selected, selected);
                }
            }    }    protected void initUI() {
            MyObjectManager manager = new MyObjectManager();
            for (int i = 0; i < 200; i++) {
                MyObject object = new MyObject("Row " + (i + 1));
                manager.addObject(object);
            }
            table = new JTable(new MyTableModel(manager));
            table.setRowHeight(20);
            TableColumn column = table.getColumnModel().getColumn(1);
            column.setCellEditor(new RadioButtonCellEditorRenderer());
            column.setCellRenderer(new RadioButtonCellEditorRenderer());
            f = new JFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.add(new JScrollPane(table), BorderLayout.CENTER);
            f.pack();
            f.setVisible(true);    }    public class MyTableModel extends AbstractTableModel implements PropertyChangeListener {        private final MyObjectManager manager;        public MyTableModel(MyObjectManager manager) {
                super();
                this.manager = manager;
                manager.propertyChangeSupport.addPropertyChangeListener(this);
                for (MyObject object : manager.getObjects()) {
                    object.getPropertyChangeSupport().addPropertyChangeListener(this);
                }
            }        @Override
            public void propertyChange(PropertyChangeEvent evt) {
                if (evt.getSource() == manager) {
                    // OK, not the cleanest thing, just to get the gist of it.
                    if (evt.getPropertyName().equals("objects")) {
                        ((MyObject) evt.getNewValue()).getPropertyChangeSupport().addPropertyChangeListener(this);
                    }
                    fireTableDataChanged();
                } else if (evt.getSource() instanceof MyObject) {
                    int index = manager.getObjects().indexOf(evt.getSource());
                    fireTableRowsUpdated(index, index);
                }
            }        @Override
            public int getColumnCount() {
                return 2;
            }        @Override
            public int getRowCount() {
                return manager.getObjects().size();
            }        public MyObject getValueAt(int row) {
                return manager.getObjects().get(row);
            }        @Override
            public Object getValueAt(int rowIndex, int columnIndex) {
                switch (columnIndex) {
                case 0:
                    return getValueAt(rowIndex).getValue();
                case 1:
                    return getValueAt(rowIndex).isSelected();
                }
                return null;
            }        @Override
            public void setValueAt(Object value, int rowIndex, int columnIndex) {
                if (columnIndex == 1) {
                    getValueAt(rowIndex).setSelected(Boolean.TRUE.equals(value));
                }
            }        @Override
            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return columnIndex == 1;
            }        @Override
            public Class<?> getColumnClass(int column) {
                switch (column) {
                case 0:
                    return String.class;
                case 1:
                    return Boolean.class;
                }
                return Object.class;
            }        @Override
            public String getColumnName(int column) {
                switch (column) {
                case 0:
                    return "Value";
                case 1:
                    return "Selected";
                }
                return null;
            }    }    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException,
                UnsupportedLookAndFeelException {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            SwingUtilities.invokeLater(new Runnable() {            @Override
                public void run() {
                    new TestTable().initUI();
                }
            });
        }
    }
      

  6.   

    公孙大哥!!!!
            小弟就说两句话:
            1.小弟继续擦活儿了!!感谢大哥的相助!!!!
            2.每一位帮过小弟的高手,小弟都为对方起一个“心中的镜像”的名字.
            大哥,如果您不在5天内为小弟的这个决定表态的话.小弟,从今天开始,就在CSDN叫您为:“乔布斯的左手”.
            这是小弟观察哥哥的头像和昵称后,花了10分钟想的名字.
            不知道哥哥觉得满意不..