如何将数据库的记录显示在JFrame窗体的JTable中并且在JTable点击相应的记录能在文相应的本字段显示信息

如何将数据库的记录显示在JFrame窗体的JTable中并且在JTable点击相应的记录能在文相应的本字段显示信息,第1张

JTable(Object[][] rowData, Object[] columnNames)

构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。

JTable(TableModel dm)

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

JTable(TableModel dm, TableColumnModel cm)

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

JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm)

构造一个 JTable,使用数据模型 dm、列模型 cm 和选择模型 sm 对其进行初始化。

JTable(Vector rowData, Vector columnNames)

构造一个 JTable 来显示 Vector 所组成的 Vector rowData 中的值,其列名称为 columnNames。

都取出来数据了,显示还不简单吗。好好看看JAVA的 API文档吧

//package item;

import javaawtDimension;

import javaawtHeadlessException;

import javaawtPoint;

import javaxswingJButton;

import javaxswingJFrame;

import javaxswingJOptionPane;

import javaxswingJPanel;

import javaxswingJScrollPane;

import javaxswingSwingUtilities;

import javaxswingJTable;

import javaxswingtableDefaultTableModel;

import javaxxmlcryptoData;

//import dbConn;

import javaawtRectangle;

import javasqlResultSet;

import javasqlSQLException;

import javautilVector;

public class Manager extends JFrame {

String xnamearr[]={"课程编号","课程名称","开课时间"};

DefaultTableModel model;

private static final long serialVersionUID = 1L;

private JPanel jContentPane = null;

private JButton jButton = null;

private JButton jButton1 = null;

private JButton jButton2 = null;

private JTable jTable = null;

private JButton getJButton() {

if (jButton == null) {

jButton = new JButton();

jButtonsetLocation(new Point(20, 0));

jButtonsetText("修改信息");

jButtonsetSize(new Dimension(100, 30));

}

return jButton;

}

private JButton getJButton1() {

if (jButton1 == null) {

jButton1 = new JButton();

jButton1setLocation(new Point(140, 0));

jButton1setText("删除信息");

jButton1setSize(new Dimension(100, 30));

}

return jButton1;

}

private JButton getJButton2() {

if (jButton2 == null) {

jButton2 = new JButton();

jButton2setLocation(new Point(260, 0));

jButton2setText("显示全部");

jButton2setSize(new Dimension(100, 30));

}

return jButton2;

}

// private void Debark() {

// Conn conn=null;

// ResultSet rs=null;

// String sql=null;

// conn=new Conn();

// sql= "select from message where =";

// rs=connexecuteQuery(sql);

//

// try {

// if (rsnext())

// {

//

// }

// else

// JOptionPaneshowMessageDialog(null,"无对应信息");

// } catch (HeadlessException e) {

// eprintStackTrace();

// } catch (SQLException e) {

// eprintStackTrace();

// }

// }

private JTable getJTable() {

if (jTable == null) {

model=new DefaultTableModel();

jTable = new JTable(model);

modelsetDataVector(getVector(), getVe());//model 传入的是数据库的二维数组 和列的数组!

// jTablesetBounds(new Rectangle(17, 97, 341, 82));

}

return jTable;

}

private JScrollPane getscol(){

JScrollPane sco=new JScrollPane(getJTable());

scosetBounds(new Rectangle(17, 97, 341, 82));

return sco;

}

public Vector getVe(){

Vector ve=new Vector();

for (int i = 0; i < xnamearrlength; i++) {

veadd(xnamearr[i]);

}

return ve;

}

private Vector getVector(){

Vector getVector=new Vector();

getVectoradd(getVe());

return getVector;

}

public static void main(String[] args) {

// TODO 自动生成方法存根

SwingUtilitiesinvokeLater(new Runnable() {

public void run() {

Manager thisClass = new Manager();

thisClasssetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

thisClasssetVisible(true);

}

});

}

public Manager() {

super();

initialize();

}

private void initialize() {

thissetSize(400, 300);

thissetContentPane(getJContentPane());

thissetTitle("管理员系统");

}

private JPanel getJContentPane() {

if (jContentPane == null) {

jContentPane = new JPanel();

jContentPanesetLayout(null);

jContentPaneadd(getJButton(), null);

jContentPaneadd(getJButton1(), null);

jContentPaneadd(getJButton2(), null);

jContentPaneadd(getscol(), null);

}

return jContentPane;

}

}

//只需要调用modelsetDataVector(传入数据库的二维数组,以及对应的列名称一维数组就可以了);

//如果实现按钮功能只需要做一个model的 get方法然后通过监听实现数据的变更

//只要你能正确获取数据就很简单了

//记得把我注释的部分取消

参考一下我的。你的while(rsnext())是不是放错地方了

public void queryCus(String sql,String[] paras){

SqlHelper sqlHelper = null;

columnNames = new Vector();

columnNamesadd("客户编号");

columnNamesadd("客户姓名");

columnNamesadd("客户性别");

columnNamesadd("身份z号码");

columnNamesadd("客户联系电话");

columnNamesadd("客户类型编号");

columnNamesadd("备注");

rowData = new Vector();

try {

sqlHelper = new SqlHelper();

ResultSet rs = sqlHelperqueryExectue(sql, paras);

while(rsnext()){

Vector hang = new Vector();

hangadd(rsgetInt(1));

hangadd(rsgetString(2));

hangadd(rsgetString(3));

hangadd(rsgetString(4));

hangadd(rsgetString(5));

hangadd(rsgetInt(6));

hangadd(rsgetString(7));

//加入到rowData

rowDataadd(hang);

}

} catch (Exception e) {

eprintStackTrace();

} finally{

sqlHelperclose();

}

}

public class BookModel extends AbstractTableModel{

    Vector rowData=null;

    Vector columnNames=null;

    

    public BookModel(){

        rowData=new Vector();

        columnNames=new Vector();

        columnNamesadd("馆藏书号");

        columnNamesadd("书名");

        columnNamesadd("作者");

        columnNamesadd("ISBN");

        columnNamesadd("类别");

        columnNamesadd("出版社");

        columnNamesadd("价格");

        columnNamesadd("书架");

        String sql="select  from book";

        String [] paras={};

        //创建SqlHelper对象

        SqlHelper sh=new SqlHelper();

        ResultSet rs=shquery(sql, paras);

        try {

            while(rsnext()){

                Vector v=new Vector();

                vadd(rsgetString(1));

                vadd(rsgetString(2));

                vadd(rsgetString(3));

                vadd(rsgetString(4));

                vadd(rsgetString(5));

                vadd(rsgetString(6));

                vadd(rsgetString(7));

                vadd(rsgetString(8));//返回查询到的值

                rowDataadd(v);

            }

            

        } catch (SQLException e) {

            // TODO Auto-generated catch block

            eprintStackTrace();

        }finally{

            shclose();

        }

    }

    

    public BookModel(String sql, String []paras){

        rowData=new Vector();

        columnNames=new Vector();

        columnNamesadd("馆藏书号");

        columnNamesadd("书名");

        columnNamesadd("作者");

        columnNamesadd("ISBN");

        columnNamesadd("类别");

        columnNamesadd("出版社");

        columnNamesadd("价格");

        columnNamesadd("书架");

        

        //创建SqlHelper对象

        SqlHelper sh=new SqlHelper();

        ResultSet rs=shquery(sql, paras);

        try {

            while(rsnext()){

                Vector v=new Vector();

                vadd(rsgetString(1));

                vadd(rsgetString(2));

                vadd(rsgetString(3));

                vadd(rsgetString(4));

                vadd(rsgetString(5));

                vadd(rsgetString(6));

                vadd(rsgetString(7));

                vadd(rsgetString(8));//返回查询到的值

                rowDataadd(v);

            }

            

        } catch (SQLException e) {

            // TODO Auto-generated catch block

            eprintStackTrace();

        }finally{

            shclose();

        }

        

    }

    public BookModel(BookModel bm){

        rowData=new Vector();

        columnNames=new Vector();

        columnNamesadd("馆藏书号");

        columnNamesadd("书名");

        columnNamesadd("作者");

        columnNamesadd("ISBN");

        columnNamesadd("类别");

        columnNamesadd("出版社");

        columnNamesadd("价格");

        columnNamesadd("书架");

        for(int i=0;i<bmgetRowCount();i++)

            {

             Vector v=new Vector();

            for(int j=0;j<bmgetColumnCount();j++){

               

                vadd((String)bmgetValueAt(i, j));

            }

            thisrowDataadd(v);

            }

    }

    

    //定义增,删,改模块

    public boolean exeUpdate(String sql, String []paras){

        //创建SqlHelper对象

        SqlHelper sh=new SqlHelper();

        boolean b=true;

        b=shexeUpdate(sql, paras);

        shclose();

        return b;

    }

    

    //定义查询模块

    public Vector query(String sql, String paras[]){

        rowData=new Vector();

        columnNames=new Vector();

        columnNamesadd("馆藏书号");

        columnNamesadd("书名");

        columnNamesadd("作者");

        columnNamesadd("ISBN");

        columnNamesadd("类别");

        columnNamesadd("出版社");

        columnNamesadd("价格");

        columnNamesadd("书架");

        

        //创建SqlHelper对象

        SqlHelper sh=new SqlHelper();

        ResultSet rs=shquery(sql, paras);

        try {

            while(rsnext()){

                Vector v=new Vector();

                vadd(rsgetString(1));

                vadd(rsgetString(2));

                vadd(rsgetString(3));

                vadd(rsgetString(4));

                vadd(rsgetString(5));

                vadd(rsgetString(6));

                vadd(rsgetString(7));

                vadd(rsgetString(8));//返回查询到的值

                rowDataadd(v);

            }

            

        } catch (SQLException e) {

            // TODO Auto-generated catch block

            eprintStackTrace();

        }finally{

            shclose();

            return rowData;

        }

        

    }

    @Override

    public int getColumnCount() {

        // TODO Auto-generated method stub

        return thiscolumnNamessize();

    }

    @Override

    public int getRowCount() {

        // TODO Auto-generated method stub

        return thisrowDatasize();

    }

    @Override

    public Object getValueAt(int rowIndex, int columnIndex) {

        // TODO Auto-generated method stub

        return ((Vector)thisrowDataget(rowIndex))get(columnIndex);

    }

    @Override

    public String getColumnName(int column) {

        // TODO Auto-generated method stub

        return (String)thiscolumnNamesget(column);

    }

}

参考这个,写个继承AbstractTableModel的model类,重写下面这几个方法

过程如下:

1、建立按钮的事件响应方法,调用以下代码功能:

2、通过JDBC或其它方式连接数据库,执行查询,获取结果

3、将返回结果转换为一个二维数组,作为参数创建JTable

当然要功能更完善,以上方法有很多方面需要考虑和修改,如进行模块划分、使用TableModel而不是数组显示JTable、表头的显示等,这些需要根据目的逐个改进,但大体过程基本一样。

以上就是关于如何将数据库的记录显示在JFrame窗体的JTable中并且在JTable点击相应的记录能在文相应的本字段显示信息全部的内容,包括:如何将数据库的记录显示在JFrame窗体的JTable中并且在JTable点击相应的记录能在文相应的本字段显示信息、如何将数据库的内容用JAVA的JTable显示出来。、java中从数据库中得到多行数据并向JTable中加入时,最后显示的只有一行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9506758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存