解决方案 »

  1.   

    在swing中用表格显示数据库中表的内容;
    我这里还有以前做的一个;
    你可以参考一下:
    package good;import java.awt.event.*;
    import java.sql.*;
    import javax.swing.*;
    import javax.swing.table.JTableHeader;
     
    public class Test extends JFrame
    {
        private JScrollPane scrollPane;
        private JTableHeader tableHeader;
        private JTable tabDemo;
        private JButton btnShow;
        private JLabel label;
        private JTextField text;
     
        public Test()
        {
            super("查询");
            this.setSize(380, 400);
            this.setLayout(null);
            this.setLocation(100, 50);
     
            scrollPane = new JScrollPane();
            scrollPane.setBounds(10, 50, 350, 290);
            btnShow = new JButton("查询");
            label = new JLabel("请输入专业:");
            text = new JTextField(10);
            btnShow.setBounds(220,10,100,30);
            label.setBounds(30, 10, 100, 30);
            text.setBounds(110,10,100,30);
     
            this.btnShow.addActionListener(new ActionListener() 
            {
                public void actionPerformed(ActionEvent ae) 
                {
                    btnShow_ActionPerformed(ae);
                }
            });
            add(scrollPane);
            add(label);
            add(text);
            add(btnShow);
            this.setVisible(true);
        }
     
        public void btnShow_ActionPerformed(ActionEvent ae)
        {
            try
            {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/student", "root", "");
     
                Statement pstm = conn.createStatement();
                String sql =text.getText();
                String sql1 = "select count(*) from st1 where speciality ='"+sql+"'"; 
                String sql2 = "select * from st1 where speciality ='"+sql+"'";
                 
                ResultSet rs1 = pstm.executeQuery(sql1);
                int count = 0;
                
                if (rs1.next())  //得到总记录数
                {
                    count=rs1.getInt(1);
                }
                rs1.close();  //关闭结果集
                 
                Object[][] info = new Object[count][5];
                count = 0;
                ResultSet rs2 = pstm.executeQuery(sql2); //查询
                while (rs2.next())
                {
                    info[count][0] = rs2.getString("no");
                    info[count][1] = rs2.getString("name");
                    info[count][2] = rs2.getString("sex");
                    info[count][3] = rs2.getString("birthday");
                    info[count][4] = rs2.getString("speciality");
                    count++;
                }
                 
                String[] title = { "学号", "姓名", "年龄", "性别", "专业" };
                tabDemo = new JTable(info, title);  // 创建JTable
                tableHeader = tabDemo.getTableHeader();  // 显示表头
                scrollPane.getViewport().add(tabDemo);   // 将JTable加入到带滚动条的面板中
            }
            catch (Exception e) 
            {
                JOptionPane.showMessageDialog(null, "错误:"+e.getMessage(), "错误",JOptionPane.ERROR_MESSAGE);
            }
        }
     
        public static void main(String[] args) 
        {
            new Test();
        }
     
    }
      

  2.   

    用渲染器Tablecellrenderer
    不过渲染器对象要能够绑定数据源,从而操作数据源。