小妹我不知道该怎么显示jtable(与sqlserver连接)啊,谁能帮我看看 谢谢了!在线等
启动类:
import java.awt.*;
import javax.swing.*;
import java.sql.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.util.*;
class Demo extends JFrame implements ActionListener
{
private ResultSet rs;
JButton jb=null;
JPanel jp1,jp2;
JScrollPane jsp=new JScrollPane();
JTable jtb;
Vector row=new Vector();
Vector col=new Vector();
DefaultTableModel dtm=new DefaultTableModel();
public Demo()
{
jtb=new JTable(dtm);
jtb.setPreferredScrollableViewportSize(new Dimension(200,200));
jsp.add(jtb);
jb=new JButton( "ok ");
jb.addActionListener(this);
jp1=new JPanel();
jp2=new JPanel();
jp2.setPreferredSize(new Dimension(300,300));
jsp.setPreferredSize(new Dimension(300,300));
jp2.setBackground(Color.red);
jp2.setLayout(new BorderLayout());
jp1.add(jb);
this.add(jp1, "North ");
this.add(jp2);
this.add(jsp);
this.setSize(400,500);
this.show();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==jb)
{
ConDatabase base=new ConDatabase( "select * from mer ");
rs=base.getrs();
try
{
ResultSetMetaData rsmd=rs.getMetaData();
for (int i = 1; i <=rsmd.getColumnCount(); i++)
{
col.add(rsmd.getColumnName(i));
}
while(rs.next())
{
Vector v=new Vector();
for (int i = 1; i <=6; i++)
{
v.add(rs.getString(i));
}
row.add(v);
}
dtm.setDataVector(row,col);
System.out.println ( "ddddddddd ");
}
catch (Exception ex)
{
System.out.println (ex.getMessage());
}
}
}
public static void main(String[] args)
{
new Demo();
}
}
//数据库联接的类:
import java.sql.*;
public class ConDatabase
{
ResultSet rs;
public ConDatabase(String str)
{
try
{
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ");
java.sql.Connection conn = java.sql.DriverManager.getConnection( "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=mer ", "sa ", " ");
java.sql.Statement sta = conn.createStatement();
rs=sta.executeQuery(str);
}
catch (Exception ex)
{
System.out.println (ex.getMessage());
}
}
public ResultSet getrs()
{
return rs;
}
}
//怎么显示不出来啊,谢谢了!在线等
[解决办法]
给大家介绍个技术群
大家一起学习,一起提高
21189212
[解决办法]
import java.awt.*;
import javax.swing.*;
import java.sql.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.util.*;
class Demo extends JFrame implements ActionListener {
private ResultSet rs;
JButton jb=null;
JPanel jp1,jp2;
JScrollPane jsp=new JScrollPane();
JTable jtb;
Vector row=new Vector();
Vector col=new Vector();
DefaultTableModel dtm=new DefaultTableModel();
public Demo() {
jtb=new JTable(dtm);
jtb.setPreferredScrollableViewportSize(new Dimension(200,200));
jsp.add(jtb);
jb=new JButton( "ok ");
jb.addActionListener(this);
jp1=new JPanel();
jp2=new JPanel();
jp2.setPreferredSize(new Dimension(300,300));
jsp.setPreferredSize(new Dimension(300,300));
jp2.setBackground(Color.red);
jp2.setLayout(new BorderLayout());
jp1.add(jb);
this.add(jp1, "North ");
this.getContentPane().add(jsp, BorderLayout.CENTER);
this.setSize(400,500);
this.show();
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb) {
ConDatabase base=new ConDatabase( "select * from audit_project ");
rs=base.getrs();
try {
ResultSetMetaData rsmd=rs.getMetaData();
for (int i = 1; i <=rsmd.getColumnCount(); i++) {
col.add(rsmd.getColumnName(i));
}
System.out.println(col);
while(rs.next()) {
Vector v=new Vector();
for (int i = 1; i <=rsmd.getColumnCount(); i++) {
v.add(rs.getString(i));
}
row.add(v);
}
System.out.println(row);
dtm.setDataVector(row,col);
jsp.setViewportView(jtb);
System.out.println( "ddddddddd ");
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
public static void main(String[] args) {
new Demo();
}
}
每次点击按钮,列数会增倍,只需要把两个vector clear()一下就行了,自己加吧。
ps:注意一下代码规范
[解决办法]
定义这样一个类,我已经写好,你可以直接调用
package com.softfz.zxj;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class MyTableModel extends AbstractTableModel {//
private ArrayList data = null;
private String[] columnNames = null;
public MyTableModel(String[] tableTitle,ArrayList tabledata)
{
columnNames = tableTitle;
data = tabledata;
}
public int getColumnCount(){
return columnNames.length;
}
public int getRowCount(){
return data.size();
}
public String getColumnName(int col){
return columnNames[col];
}
public Object getValueAt(int row,int col){
return ((ArrayList)data.get(row)).get(col);
}
/**
* @return 返回 data。
*/
public ArrayList getData() {
return data;
}
实例化时要传入两个参数tableTitle,tabledata
用法:tableTitle为表中每个字段的标题,tabledata这个参数是一个ArrayList
如:String[] title ={ "name ", "age "};
ArrayList record=new ArrayList();
record.add( "zxj ");
record.add(new Integer(56))
ArrayList data = new ArrayList();
data.add(record);
table.setModel(new MyTableModel(title ,data));
[解决办法]
问题你真是小妹吗?别冒充啊,你要小弟也会有人喜欢你的,当然小妹就别说了,里面色狼多的是,他们一定争着向你伸出手的,祝你一切顺利啊!