Вставьте радиокнопки в JTable Netbeans - PullRequest
1 голос
/ 02 февраля 2012

Я заполняю данные сотрудника в JTable, используя Netbeans. Я хочу добавить Radiobutton в каждую строку, чтобы пользователь мог выбрать любую строку и выполнять такие действия, как обновление / удаление и т. Д. Вот мой код для TableModel:

    DefaultTableModel model = new DefaultTableModel();

    model.setColumnIdentifiers(new String[] {"Select","Employee ID","Name","Surname","Birth Place","Genre","Home","Marital Status","Phone","Age","Department"});
    try{
    con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/"+database,"root","123456");
    Statement s = con.createStatement ();
    s.executeQuery ("SELECT * FROM Employee");
    ResultSet rs = s.getResultSet ();
    rs.next ();
    String eid = rs.getString ("emp_no");
    String name = rs.getString ("name");
    String surname = rs.getString ("surname");
    String pbirth = rs.getString ("place_birth");
    String genre = rs.getString ("genre");
    String home = rs.getString ("home");
    String mstatus = rs.getString ("marital_status");
    String ph = rs.getString ("phone");
    int age = rs.getInt ("age");
    String dept = rs.getString ("department");
    for(int i=0;i<30;i++)
    model.addRow(new Object[] {?,eid, name, surname, pbirth, genre, home, mstatus, ph, age, dept});
    }
    catch (Exception e){

    }
    this.jTable1.setModel(model);

В первом столбце каждой строки я хочу вставить радиокнопку. Пожалуйста, предложите мне. спасибо.

Ответы [ 2 ]

4 голосов
/ 02 февраля 2012

Я бы предложил

  1. изменить JRadioButton на JCheckBox , поскольку JCheckBox в JTable только представляет Boolean значение

  2. не используйте сгенерированный код из NetBeans, пишите код своими руками

3 голосов
/ 02 февраля 2012

Вы должны реализовать TableCellEditor и переопределить getTableCellEditorComponent вот так

public java.awt.Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)

{
            return new JRadioButton();
}

Надеюсь, это поможет

РЕДАКТИРОВАТЬ: Вы можете написать так

this.jTable1.getColumnModel().getColumn(0).setCellEditor(new javax.swing.table.TableCellEditor(){
    @Override
    public java.awt.Component getTableCellEditorComponent(javax.swing.JTable table, java.lang.Object value, boolean isSelected, int row, int column) {
        return new javax.swing.JRadioButton();
    }

    @Override
    public java.lang.Object getCellEditorValue() {
return null;//Here you can return the radio button status
    }

    @Override
    public boolean isCellEditable(java.util.EventObject anEvent) {
        return false; //uneditable cell
    }

    @Override
    public boolean shouldSelectCell(java.util.EventObject anEvent) {
        return false;
    }

    @Override
    public boolean stopCellEditing() {
        return true;
    }

    @Override
    public void cancelCellEditing() {       
    }

    @Override
    public void addCellEditorListener(javax.swing.event.CellEditorListener l) {
    }

    @Override
    public void removeCellEditorListener(javax.swing.event.CellEditorListener l) {
    }

});

Вы можете взять реализацию редактора ячеек в отдельный класс.

Также вы должны установить флаги в соответствии с вашимтребование.

...