将布尔值从字符串更改为复选框 (JTable)
Change Boolean from a String to a checkbox (JTable)
我在将数据库中的结果显示到 JTable 时遇到了一个小问题。它正确显示所有数据,但目前它显示 "true" 或 "false" 布尔值。
我知道这一定是因为我正在使用 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());
}
首先,您必须在模型中将数据保存为布尔值。所以你应该使用这个 rs.getBoolean("Fanta")
而不是 rs.getString("Fanta").trim()
.
其次,您必须覆盖 JTable
中的 public Class getColumnClass(int column)
方法。您的代码可能如下所示:
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;
}
};
我在将数据库中的结果显示到 JTable 时遇到了一个小问题。它正确显示所有数据,但目前它显示 "true" 或 "false" 布尔值。
我知道这一定是因为我正在使用 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());
}
首先,您必须在模型中将数据保存为布尔值。所以你应该使用这个 rs.getBoolean("Fanta")
而不是 rs.getString("Fanta").trim()
.
其次,您必须覆盖 JTable
中的 public Class getColumnClass(int column)
方法。您的代码可能如下所示:
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;
}
};