import javax.swing.table.JTableHeader
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import java.sql.*
public class Test extends JFrame{
// 定义组件
private JScrollPane scpDemo
private JTableHeader jth
private JTable tabDemo
private JButton btnShow
// 构造方法
public Test(){
// 窗体的相关属性的定义
super("JTable数据绑定示例")
this.setSize(330,400)
this.setLayout(null)
this.setLocation(100,50)
// 创建组件
this.scpDemo = new JScrollPane()
this.scpDemo.setBounds(10,50,300,270)
this.btnShow = new JButton("显示数据")
this.btnShow.setBounds(10,10,300,30)
// 给按钮注册监听
this.btnShow.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
btnShow_ActionPerformed(ae)
}
})
// 将组件加入到窗体中
add(this.scpDemo)
add(this.btnShow)
// 显示窗体
this.setVisible(true)
}
// 点击按钮时的事件处理
public void btnShow_ActionPerformed(ActionEvent ae){
// 以下是连接数据源和显示数据的具体处理方法,请注意下
try{
// 获得连接
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
Connection conn = DriverManager.getConnection("jdbc:odbc:localServer","sa","")
// 建立查询条件
String sql = "select * from localServer"
PreparedStatement pstm = conn.prepareStatement(sql)
// 执行查询
ResultSet rs = pstm.executeQuery()
// 计算有多少条记录
int count = 0
while(rs.next()){
count++
}
rs = pstm.executeQuery()
// 将查询获得的记录数据,转换成适合生成JTable的数据形式
Object[][] info = new Object[count][4]
count = 0
while(rs.next()){
info[count][0] = Integer.valueOf( rs.getInt("id"))
info[count][1] = rs.getString("name")
info[count][2] = Integer.valueOf( rs.getInt("age") )
info[count][3] = rs.getString("sex")
count++
}
// 定义表头
String[] title = {"学号","姓名","年龄","性别"}
// 创建JTable
this.tabDemo = new JTable(info,title)
// 显示表头
this.jth = this.tabDemo.getTableHeader()
// 将JTable加入到带滚动条的面板中
this.scpDemo.getViewport().add(tabDemo)
}catch(ClassNotFoundException cnfe){
JOptionPane.showMessageDialog(null,"数据源错误","错误",JOptionPane.ERROR_MESSAGE)
}catch(SQLException sqle){
JOptionPane.showMessageDialog(null,"数据 *** 作错误","错误",JOptionPane.ERROR_MESSAGE)
}
}
public static void main(String[] args){
new Test()
}
}
你数据库会连接吗?假设你会,参照下面的代码:private static Connection getConnection()
{
.......//这里是连接数据库的代码,返回一个Connection对象。要按实际的数据库写。
}
…………
Connection conn=getConnection()
DefaultTableModel model=new DefaultTableModel()
JTable jTable=new JTable()
jTable.setModel(model)
try
{
Statement st=conn.createStatement()
String sql="select * from user"//假设要读的数据库表为user
ResultSet results=st.executeQuery(sql)
ResultSetMetaData metaData=results.getMetaData()
String[] headerData=new String[metaData.getColumnCount()]
for(int i=1i<metaData.getColumnCount()i++)
{
headerData[i-1]=metaData.getColumnName(i)
model.addColumn(headerData[i-1])
}
while(results.next())//假设表结构是这样的:id int,name varchar(12)
{
int id=results.getInt("id")
String name=results.getString("name")
model.addRow(new Object[]{id,name})
}
}
catch(Exception e){}
代码大致如上。
这个要从头说起就复杂了。我简单说一下吧。首先,要把数据从库中取出来,假设你已经会了。
其次,创建一个表格模型,
DefaultTableModel model=new DefaultTableModel()
//创建表头
model.setColumnIdentifiers(new Object[]{"日期/时间"," *** 作工","产品型号","数量"})
再次,添加数据
while(results.next())
{
String dt=results.getString("dt")
String name=results.getString("name")
String pname=results.getString("product")
int i=results.getInt("num")
//把以上数据添加到表格模型的一行中
model.addRow(new Object[]{dt,name,pname,i})
}
最后,用模型生成表格
JTable table=new JTable(model)
当然,还有一些其它的 *** 作,比如把表格显示出来,表格的字体、行高等设置等等,不再一一赘述。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)