Изменить логическое значение со строки на флажок (JTable)

У меня небольшая проблема с отображением результатов из моей базы данных в JTable. Он отображает все данные правильно, но на данный момент он показывает «истина» или «ложь» для логического значения.

Я знаю, что это должно быть, потому что я использую getString, но кто-нибудь знает, что использовать, чтобы вместо этого изменить его на флажок?

Текущая JTable:

введите здесь описание изображения

Моя база данных:

введите здесь описание изображения

Код:

connection con=new connection();
Connection getcon=null;
Vector col = new Vector();
Vector dat= new Vector();
ResultSet rs = null;
try{
    getcon = con.creatConnection();
    col.add("Fanta");
    col.add("Crisps");
    col.add("Beer");
    col.add("Wine");// create income table default colum names and sore it
    col.add("Water");
    col.add("Seat Row");
    col.add("Seat");
    col.add("Total Cost");  
    rs=getcon.createStatement().executeQuery("select*from orders"); //getting all the information from the table

    dat.clear();

    while(rs.next()){// if record source avilable

        Vector v =new Vector();
        v.add(rs.getString("Fanta").trim());
        v.add(rs.getString("Crisps").trim());
        v.add(rs.getString("Beer").trim());
        v.add(rs.getString("Wine").trim());// getting income values from database and store in dat
        v.add(rs.getString("Water").trim());
        v.add(rs.getString("SeatRow").trim());
        v.add(rs.getString("Seat").trim());
        v.add(rs.getString("TotalCost").trim());

        dat.add(v);
    }
    orderResults.setModel(new DefaultTableModel(dat, col));
}
catch(Exception ex){
    JOptionPane.showMessageDialog(null, ex.getMessage());
}

person ZenoX    schedule 06.01.2016    source источник
comment
Пробовали ли вы rs.getBoolean("FieldName")?   -  person PM 77-1    schedule 06.01.2016
comment
Да, это дает тот же результат, к сожалению. :/   -  person ZenoX    schedule 06.01.2016
comment
Как использовать таблицы   -  person MadProgrammer    schedule 07.01.2016


Ответы (1)


Сначала вы должны сохранить данные как логическое значение в своей модели. Поэтому вы должны использовать это rs.getBoolean("Fanta") вместо rs.getString("Fanta").trim().

Во-вторых, вы должны переопределить метод public Class getColumnClass(int column) из вашего JTable. Ваш код может выглядеть так:

JTable orderResults = new JTable() {
    @Override
    public Class getColumnClass(int column) {
        // first 5 columns will be represented as an checkbox
        if(column <= 4){
            return Boolean.class;
        }

        // rest of them as a text
        return String.class;
    }
};
person Mateusz Korwel    schedule 06.01.2016