主要代码如下:
class Test{
map = BcDatabase.getBardno("select * from bar_dno ");
item = map.keySet().iterator();
while(item.hasNext())
{
String strKey = (String)item.next();
dno = (BcDbBardno)map.get(strKey);
str3Code = dno.getCODE();
str4Code = dno.getDNO();
str5Code = dno.getKEY();
System.out.println(str3Code);
v1.addElement(str3Code);
vector.addElement(v1);
}
MyTabel my = new MyTabel();
table = new JTable(my);class MyTable extends AbstractTableModel
{
public int getRowCount()
{
//System.out.println(vector.size());
return vector.size();
}
public int getColumnCount()
{
return name.length;
}
public Object getValueAt(int row, int column)
{
if(!vector.isEmpty())
{
//System.out.println(((Vector)vector.elementAt(row)).elementAt(column).toString());
return ((Vector)vector.elementAt(row)).elementAt(column);
}
else
{
return null;
}
}
public String getColumnName(int column)
{
return name[column];
}
public Class getColumnClass(int c)
{
//System.out.println(getValueAt(0,c).getClass().getName());
return getValueAt(0,c).getClass();
}//取得列所属对象
}
}
为什么jtable中显示的全是一样的数据????
急!!
class Test{
map = BcDatabase.getBardno("select * from bar_dno ");
item = map.keySet().iterator();
while(item.hasNext())
{
String strKey = (String)item.next();
dno = (BcDbBardno)map.get(strKey);
str3Code = dno.getCODE();
str4Code = dno.getDNO();
str5Code = dno.getKEY();
System.out.println(str3Code);
v1.addElement(str3Code);
vector.addElement(v1);
}
MyTabel my = new MyTabel();
table = new JTable(my);class MyTable extends AbstractTableModel
{
public int getRowCount()
{
//System.out.println(vector.size());
return vector.size();
}
public int getColumnCount()
{
return name.length;
}
public Object getValueAt(int row, int column)
{
if(!vector.isEmpty())
{
//System.out.println(((Vector)vector.elementAt(row)).elementAt(column).toString());
return ((Vector)vector.elementAt(row)).elementAt(column);
}
else
{
return null;
}
}
public String getColumnName(int column)
{
return name[column];
}
public Class getColumnClass(int c)
{
//System.out.println(getValueAt(0,c).getClass().getName());
return getValueAt(0,c).getClass();
}//取得列所属对象
}
}
为什么jtable中显示的全是一样的数据????
急!!
JTabel(Vector,Vector) 的上面查询数据的话
直接就用一个声名好的 向量来保存数据 如
V.getString("a") V.getString("b"); 然后直接把V向量放到 JTable 里面就可以了。
如果这样做达不到你的效果的话,我发我的一段 JTable 的核心代码给你。你只需要把数据库语句写好放到响应的函数里就好了。自己慢慢看。
//////////////////////////////////////////以下是JTable的核心代码
///////////////////////////////////////////////////SQL语法驱动
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=data\\member.mdb";
String username = "";
String password = "";
//加载驱动程序以连接数据库
try {
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
connection = DriverManager.getConnection(
url, username, password );
}
//捕获加载驱动程序异常
catch ( ClassNotFoundException cnfex ) {
System.err.println(
"装载 JDBC/ODBC 驱动程序失败。" );
cnfex.printStackTrace();
System.exit( 1 ); // terminate program
}
//捕获连接数据库异常
catch ( SQLException sqlex ) {
System.err.println( "无法连接数据库" );
sqlex.printStackTrace();
System.exit( 1 ); // terminate program
}
//如果数据库连接成功,则建立GUI
//SQL语句
///////////////////////////////////////////////////////SQL语法驱动
submitQuery = new JButton( "更新下列数据" );
//Button事件
submitQuery.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e )
{
getTable();
}
}
);
////////////////////////////////////////////////////////////////////////////以下是整个画面的布局
JPanel topPanel = new JPanel();
JPanel topPanelx = new JPanel();
topPanel.setLayout( new BorderLayout() );
//将"输入查询"编辑框布置到 "CENTER"
//将"提交查询"按钮布置到 "SOUTH"
topPanelx.add(submitQuery);
topPanelx.add(jcjl);
topPanelx.add(jcli);
topPanelx.add(jcjl1);
topPanelx.add(jctf);
topPanelx.add(jcjb);
topPanel.add( topPanelx, BorderLayout.SOUTH );
table = new JTable();
Container c = getContentPane();
c.setLayout( new BorderLayout() );
//将"topPanel"编辑框布置到 "NORTH"
c.add( topPanel, BorderLayout.NORTH );
//将"table"编辑框布置到 "CENTER"
c.add( table, BorderLayout.CENTER );
getTable();
secondJP.add(c,BorderLayout.CENTER);
secondJF.add(secondJP);
secondJF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
secondJF.setBounds(200,100,850,500);
secondJF.show();
}
private void getTable() //////////////////更新列表
{
try {
//执行SQL语句
String sq ="SELECT * FROM lyh";
statement = connection.createStatement();
resultSet = statement.executeQuery( sq );
//在表格中显示查询结果
displayResultSet( resultSet );
}
catch ( SQLException sqlex ) {
sqlex.printStackTrace();
}
} ////////////////////////////////////////////////////////////////结束更列表结束
private void getjcTabel() /////////////////筛选细信息的查询
{
try {
//执行SQL语句
String getjctf = jctf.getText();
String getjcli =(String)jcli.getSelectedItem();
System.out.println(getjcli);
String sqt ="select * from lyh where "+getjcli+" like '"+"%"+getjctf+"%"+"' ";
statement1 = connection.createStatement();
resultSet1 = statement.executeQuery( sqt );
//在表格中显示查询结果
displayResultSet( resultSet1 );
}
catch ( SQLException sqlejc ) {
System.out.println("出现异常"+sqlejc);
sqlejc.printStackTrace();
}
}
/////////////////////////////////////////////////////////////结束筛选信息的查询
private void displayResultSet( ResultSet rs )
throws SQLException
{
//定位到达第一条记录
boolean moreRecords = rs.next();
//如果没有记录,则提示一条消息
if ( ! moreRecords ) {
JOptionPane.showMessageDialog( this,
"结果集中无记录" );
return;
}
Vector columnHeads = new Vector();
Vector rows = new Vector();
try {
//获取字段的名称
ResultSetMetaData rsmd = rs.getMetaData();
for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
columnHeads.addElement( rsmd.getColumnName( i ) );
//获取记录集
do {
rows.addElement( getNextRow( rs, rsmd ) );
} while ( rs.next() );
//在表格中显示查询结果
table = new JTable( rows, columnHeads );
JScrollPane scroller = new JScrollPane( table );
Container c = getContentPane();
c.remove(1);
c.add( scroller, BorderLayout.CENTER );
//刷新Table
c.validate();
}
catch ( SQLException sqlex ) {
sqlex.printStackTrace();
}
}
private Vector getNextRow( ResultSet rs,
ResultSetMetaData rsmd )
throws SQLException
{
Vector currentRow = new Vector();
for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
currentRow.addElement( rs.getString( i ) );
//返回一条记录
return currentRow;
} public void shutDown()
{
try {
//断开数据库连接
connection.close();
}
catch ( SQLException sqlex ) {
System.err.println( "Unable to disconnect" );
sqlex.printStackTrace();
}
}
///////////////////////////JTable核心代码结束