哪位大哥大姐能帮我解答一下啊,为什么表格内容显示不出来啊!!!

u010263074 2013-04-29 02:06:27
这里是代码:

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;
import javax.swing.table.*;
import java.sql.*;
import java.util.*;


class JJtable extends JFrame implements ActionListener{




JTable table;
DefaultTableModel dtm;
Vector<String> title = new Vector<String>();
JPanel p1 = new JPanel();
JScrollPane p2;
JButton ok = new JButton("查询");
JLabel L1=new JLabel("性别");
JLabel L2=new JLabel("民族");
JComboBox combsex = new JComboBox();
JTextField txtaddr =new JTextField(20);
PreparedStatement pstmt;
ResultSet rs;


public JJtable()
{
String sql="select yh_id as学号 , yh_xingming as 姓名 , yh_xingbie as 性别 , yh_minzu as 民族 from Yhg where yh_xingbie like ? and yh_minzu like ?";
try{
pstmt = ConnectServer.con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
pstmt.setString(1, "%");
pstmt.setString(2, "%");
rs=pstmt.executeQuery();
ResultSetMetaData dbmd=rs.getMetaData(); //获得表的元数据

for(int i=1;i<=dbmd.getColumnCount();i++)
title.addElement(dbmd.getColumnName(i)); //将列名填入表头向量

dtm=new DefaultTableModel(null,title);
initTable();
table=new JTable(dtm);

table.setRowHeight(20);

p2=new JScrollPane(table);

combsex.addItem("所有"); combsex.addItem("男"); combsex.addItem("女");
p1.add(L1);p1.add(combsex);p1.add(L2);p1.add(txtaddr);p1.add(ok);
ok.addActionListener(this);
this.getContentPane().add(p1,"North");
this.getContentPane().add(p2,"Center");

}catch(Exception e){e.printStackTrace(); dispose();}
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
try{
rs.close();
pstmt.close();

}catch(SQLException ee){ee.printStackTrace();}
}
});


setTitle("按性别查找");
setSize(600,400);
setVisible(true);
}

public void initTable(){

dtm.setRowCount(0);
try{
rs.beforeFirst();
while(rs.next()){
Vector<String> v1 = new Vector<String>();
for(int i=1;i<=title.size();i++)
v1.addElement(rs.getString(i));

dtm.addRow(v1);
}
}catch(SQLException e){e.printStackTrace();}
dtm.fireTableStructureChanged();
}

public void actionPerformed(ActionEvent e){
if(e.getSource()==ok){
String sex=(String)combsex.getSelectedItem();
String addr=txtaddr.getText();
try{
if(sex.equals("所有"))pstmt.setString(1,"%" );
else pstmt.setString(1,sex);
if(addr.equals(""))pstmt.setString(2,"%");
else pstmt.setString(2,addr+"%");
rs=pstmt.executeQuery();
JOptionPane.showMessageDialog(null,"信息查询成功!","成功信息",JOptionPane.INFORMATION_MESSAGE);
}catch(SQLException ee){}

}
initTable();
}


public static void main(String args[]){
JFrame.setDefaultLookAndFeelDecorated(true);
Font font=new Font("JFrame",Font.PLAIN,14);
Enumeration<?> keys=UIManager.getLookAndFeelDefaults().keys();
while(keys.hasMoreElements()){
Object key=keys.nextElement();
if(UIManager.get(key)instanceof Font)UIManager.put(key, font);
}
if(!ConnectServer.conn("jdbc:odbc:Fxgx","","")){
JOptionPane.showMessageDialog(null, "数据连接不成功");
System.exit(0);
}

new JJtable();
}
}
...全文
113 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gloomyfish 2013-04-29
  • 打赏
  • 举报
回复
你从DB取到数据没有啊,debug过吗/? 给个例子给你看看,只要替换一下数据就okie
package com.gloomyfish.swing.rounedpanel;

import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

public class JTableDemo extends JFrame
{
	public JTableDemo()
	{
		super("Table Demo");
		initComponents();
	}

	private void initComponents() {
		Person pOne = new Person();
		pOne.setName("Mike");
		pOne.setAge(25);
		pOne.setAddress("UK");
		pOne.setCompany("IBM");
		Person pTwo = new Person();
		pTwo.setName("Johe");
		pTwo.setAge(27);
		pTwo.setAddress("US");
		pTwo.setCompany("Oracle");
		List<Person> list = new ArrayList<Person>();
		list.add(pOne);
		list.add(pTwo);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JTable table = new JTable(new MyTableModel(list));
		JScrollPane scrollPane = new JScrollPane(table);
		this.getContentPane().setLayout(new BorderLayout());
		this.getContentPane().add(scrollPane, BorderLayout.CENTER);
		this.pack();
		this.setVisible(true);
		
	}
	class MyTableModel extends AbstractTableModel {
	    private String[] columnNames = new String[]{"Name", "Age", "Address", "Company"};
	    private List<Person> data = null;
	    
	    public MyTableModel(List<Person> data)
	    {
	    	this.data = data;
	    }

	    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) {
	    	Person p = data.get(row);
	    	if(col == 0)
	    	{
	    		return p.getName();
	    	} 
	    	else if(col == 1)
	    	{
	    		return p.getAge();
	    	}
	    	else if(col == 2)
	    	{
	    		return p.getAddress();
	    	}
	    	else if(col == 3)
	    	{
	    		return p.getCompany();
	    	} 
	    	else 
	    	{
	    		return null;
	    	}
	    }

	    public Class getColumnClass(int c) {
	        return getValueAt(0, c).getClass();
	    }

	    /*
	     * Don't need to implement this method unless your table's
	     * editable.
	     */
	    public boolean isCellEditable(int row, int col) {
	    	return false;
	    }

	}
	public class Person {
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public int getAge() {
			return age;
		}
		public void setAge(int age) {
			this.age = age;
		}
		public String getAddress() {
			return address;
		}
		public void setAddress(String address) {
			this.address = address;
		}
		public String getCompany() {
			return company;
		}
		public void setCompany(String company) {
			this.company = company;
		}
		private String name;
		private int age;
		private String address;
		private String company;
	}
	
	public static void main(String[] args)
	{
		new JTableDemo();
	}
	
}

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧