您的位置:首页 > 编程语言 > Java开发

Java --------百思不得其解

2015-07-30 17:48 531 查看
package com.JTable_test;

/*

* 1.先定义一个JScrollPane

*

*

*

*

* */

import javax.swing.*;

import javax.swing.table.*;

import java.awt.*;

import java.util.Vector;

import java.sql.*;

public class TableModel_2 extends JFrame

{

JScrollPane jsp;

TableModel table=null;

JTable jt=null;

Vector rowdata,columname;

// 读取数据库

Connection con=null;

Statement stmt=null;

ResultSet rs=null;

public static void main(String[] args)

{

TableModel_2 tm=new TableModel_2();

}

TableModel_2()

{

rowdata=new Vector();

columname=new Vector();

Vector hang=new Vector();

//定义列名,定义行数据

columname.add("pk_sdbh");// 此处有警告:Type safety: The method add(Object) belongs to the raw type Vector. References to generic type Vector<E> should be parameterized

columname.add("sdbh");

columname.add("sdmc");

columname.add("lxdh");

columname.add("fzr");

// 为什么不显示列名???

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

con=DriverManager.getConnection("jdbc:odbc:kaoshi","sa","411628");// 修改为这样之后,能正常工作。

// 这样写的有错误吗???con=DriverManager.getConnection("jdbc:odbc:127.0.0.1 :1433/kaoshi","sa","411628");

stmt=con.createStatement();

rs=stmt.executeQuery("select*from ta_sdb");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//读取数据库

try {

while(rs.next())

{

String pk_sdbh=rs.getString(1);

String sdbh=rs.getString(2);

String sdmc=rs.getString(3);

String lxdh=rs.getString(4);

String fzr=rs.getString(5);

System.out.println(pk_sdbh);

hang.add(pk_sdbh);

hang.add(sdbh);

hang.add(sdmc);

hang.add(lxdh);

hang.add(fzr);

rowdata.add(hang);// 把hang 这个Vector 元素加入rowdata中。

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

finally

{

try

{

try {

if(rs!=null)

stmt.close();

if(stmt!=null)

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

finally

{

}

}

/*

* table=new DefaultTableModel(rowdata,columname);

jt.setModel(table);

如何看待,上面这俩句话???

*/

/*

* JScrollPane jsp=new JScrollPane();

table=new DefaultTableModel(rowdata,columname);

//加上这一句:table.setPreferredScrollableViewPortSize(new Dimension(400,80));这个方法的作用是什么???

*

*

JTable jt=new JTable(table);

DefaultTableModel 到底能不能这样用???

为什么只要改成这样之后,就会出错???

这是不是就是说,默认表模型不能这样使用???

*查阅JDK帮助文档之后,可以看到:

*:Table(TableModel dm)

*:构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化。

*:

*这也就是说,可以这样使用???那么为什么出错???

*/

DefaultTableModel table=new DefaultTableModel(rowdata,columname);

JTable jtb=new JTable(table);

jtb.setPreferredScrollableViewportSize(new Dimension(500,600));

JScrollPane jsp=new JScrollPane(jtb);

/*JPanel jp=new JPanel();

jp.add(jtb);

this.add(jp); // 改成这样之后,又能把表显示出来,这说明是:我把 JScrollPane 用错了!

*/

this.add(jsp);

this.setSize(300,400);

this.setTitle("试用默认表模型");

this.setLocation(300,300);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: