import java.awt.BorderLayout;
import java.awt.Dimension;
import java.sql.ResultSet;
import java.sql.SQLException;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel; @SuppressWarnings("serial")
class MyTableDemo extends JPanel{ public MyTableDemo() {
//声明自己的表格,并添加到JTable中
MyTableModel myModel = new MyTableModel();
myModel.init();
JTable table = new JTable(myModel);
table.setPreferredScrollableViewportSize(new Dimension(500, 70)); //将表格添加到可滚动的面板
JScrollPane scrollPane = new JScrollPane(table); //将滚动面板添加到窗体
this.add(scrollPane, BorderLayout.CENTER);
this.setVisible(true);
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
@SuppressWarnings("unused")
MyTableDemo frame = new MyTableDemo();
}
class MyTableModel extends AbstractTableModel {
String[] columnNames;
Object[][] data;
public void init()
{
ResultSet r=Database.stmt_select("select * from course");
try {
columnNames =new String[] {"课程编号",
"课程名称",
"课程代码",
"是否已选"};
while(r.next())
{
data=new Object[][]{
{r.getString(1), r.getString(2),
r.getString(3),new Boolean(r.getString(4))} };
System.out.print("tr"+r.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public int getColumnCount() {
// System.out.println(columnNames.length);
return columnNames.length;
}
public int getRowCount() {
return data.length;
} public String getColumnName(int col) {
return columnNames[col];
} public Object getValueAt(int row, int col) {
return data[row][col];
} @SuppressWarnings("unchecked")
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
} public boolean isCellEditable(int row, int col) {
if (col < 2) {
return false;
} else {
return true;
}
} public void setValueAt(Object value, int row, int col) {
System.out.println("修改数据位置: " + row + "," + col
+ " 新数据为: " + value); data[row][col] = value;
fireTableCellUpdated(row, col); System.out.println("表格新数据:");
printDebugData(); } private void printDebugData() {
int numRows = getRowCount();
int numCols = getColumnCount(); for (int i=0; i < numRows; i++) {
System.out.print(" 行 " + i + ":");
for (int j=0; j < numCols; j++) {
System.out.print(" " + data[i][j]);
}
System.out.println();
}
System.out.println("--------------------------");
}
}
}这样从数据库中取直只能在table中显示数据库中的一行的值,我想把数据库中的所有值都显示到表格里,但不知道怎么用循环控制,还是ResultSet对象有什么特别的方法可以这样做,希望大家不吝赐教!
while(r.next())
{
data=new Object[][]{
{r.getString(1), r.getString(2),
r.getString(3),new Boolean(r.getString(4))} };
System.out.print("tr"+r.getString(1));
}你可以把你的data输出来看看 就只有一行
循环的时候 你的data就总是在变化(一行) 而不是把新的数据 一层一层的加上去 ~
int k = 0 ;
while(r.next()){
date[k][0] = r.getString(1);
date[k][1] = r.getString(2);
date[k][2] = r.getString(3);
date[k++][3] = r.getString(4);
}
ResultSet r=Database.stmt_select("select count(*) from course");
int size = 0;
if(r.next())
{
size = r.getInt(1);
}
String[] head = new String[] {"课程编号","课程名称","课程代码","是否已选"};
Object[][] result = new Object[0][];
DefaultTableModel model = new DefaultTableModel(result, head);
Vector<Object> rowData = null;
while (r.next()){
rowData = new Vector<Object>();
rowData.add(r.getString(1));
rowData.add(r.getString(2));
rowData.add(r.getString(3));
rowData.add(new Boolean(r.getString(4)));
model.addRow(rowData);
}
table.setModel(model);
int k = 0 ;
ResultSet r=Database.stmt_select("select * from course");
try {
columnNames =new String[] {"课程编号",
"课程名称",
"课程代码",
"是否已选"};
data= new Object[][]{};
while(r.next()){
data[k][0] = r.getString(1);
data[k][1] = r.getString(2);
data[k][2] = r.getString(3);
data[k++][3] = r.getString(4);
System.out.println("data[1][0]"+data[1][0]+r.getString(1));我这样写 发觉连表格都没有? 怎么回事?
try {
int size = 0;
if(r.next())
{
size = r.getInt(1);
} columnNames =new String[] {"课程编号",
"课程名称",
"课程代码",
"是否已选"};
data= new Object[size][]{};//这个size不能用的说,报错!
while(r.next()){
data[k][0] = r.getString(1);
data[k][1] = r.getString(2);
data[k][2] = r.getString(3);
data[k++][3] = r.getString(4);
System.out.println("data[1][0]"+data[1][0]+r.getString(1));
}
}catch(Exception e)
{
}