您好我是使用JT的JT的新手, 我有一个来自我的数据库的多个rresult,它存储在resultset中。 我的问题是我在jtable中使用了cellrendered,我没有任何办法,只能将结果集存储在String [] []或Object [] []中。
String[] columnNames = {"Employee ID", "Firstname","Lastname", "Position"};
String[][] database;//This is where i need to put the result set
DefaultTableModel model = new DefaultTableModel(database,columnNames){
public Class getColumnClass(int column){
return getValueAt(1, column).getClass();
}
};
这是创建表格的功能
private JComponent createData(DefaultTableModel model)
{
JTable table = new JTable( model )
{
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);
if (!isRowSelected(row))
{
c.setBackground(getBackground());
int modelRow = convertRowIndexToModel(row);
String type = (String)getModel().getValueAt(modelRow, 1);
if ("Nick".equals(type)) c.setBackground(Color.GREEN);
if ("Leth".equals(type)) c.setBackground(Color.YELLOW);`
}
return c;
}
};
table.setPreferredScrollableViewportSize(table.getPreferredSize());
table.changeSelection(0, 0, false, false);
table.setAutoCreateRowSorter(true);
JScrollPane scrollPane = new JScrollPane( table );
scrollPane.setBounds(252, 11, 404, 402);
return scrollPane;
}
这是我调用函数创建表getContentPane().add(createData(model));
的地方,而String [] []数据库变量是从数据库插入数据的方法。
这是我进入谷歌的方式,到目前为止我没有任何想法在cellrendered这就是为什么我认为我需要存储在String [] []中的结果集为我完成我的目标。
这是我从数据库中获取数据的地方
public void loadList(){
String sql = "SELECT emp_id,lname,fname,positional_status from tblEmployee";
try{
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while (rs.next()){
//what goes here to populate my data fetch from database and put in
// String[][] database?
}
}catch(Exception err){
JOptionPane.showMessageDialog(null, err);
}
}
任何建议都将受到赞赏。
答案 0 :(得分:1)
以下帖子可能对您有帮助。
为了您的学习和更好的理解,请阅读有关How to Use Tables的更多信息,其中说明了自定义渲染器和其他示例以及详细示例代码。
答案 1 :(得分:0)
可能的第一步是从String[][]
制作ResultSet
。我假设您希望能够显示的最大行数,所以我在此处包含了这个想法。这只是为了展示迭代如何工作的基本思路。此处,maximumRows
,numberOfColumns
和resultSet
已在范围内并已初始化。
String[][] data = new String[maximumRows][numberOfColumns];
for (int rowNum = 0; rowNum < maximumRows && resultSet.next(); rowNum++) {
for (int columnNum = 0; columnNum < numberOfColumns; columnNum++ ) {
Object value = resultSet.getObject(columnNum + 1);
if (value != null) {
data[rowNum][columnNum] = value.toString();
}
}
}
这里的一个关键点是第二行的resultSet.next()
。这是导致ResultSet
从一行移动到下一行的原因。如果没有更多数据,它也会返回false
。
获得String[][]
后,您可以将其传递给DefaultTableModel
的构造函数,甚至可以直接传递给JTable
,具体取决于您的表格的要求。