将数据库信息通过就jtable展示并且有相关操作

系列文章目录

第一节 通过jdbc连接数据库
第二节 通过datasource开源项目连接数据库
第三节 事务控制
第四节 数据库应用程序开发


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


jtable介绍

表格JTable是通过表格将信息显示出来 在这里我们就可以通过JTable将数据库的信息显示出来 JTable的创建方式有以下五种,一般常用第五种方式

在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、jtable实例

示例一:利用 rowData 和 columnNames 创建

Object data[][] = {{"cf","man",new Integer(19),"dangyuan"},
				{"cf","man",new Integer(19),"dangyuan"},
				{"cf","man",new Integer(19),"dangyuan"},
		};
		String colString[] = {"name","sex","age","society"};
		JTable table = new JTable(data,colString);
		
		JScrollPane pane = new JScrollPane(table);
		table.setRowHeight(25);
		JFrame f = new JFrame();
		f.setSize(300,200);
		f.add(pane);
		f.setVisible(true);

示例二 :利用tableModel来创建JTable
表格数据必须实现tabelModel接口,生成tablemodel类型对象来表示数据有两种方法
1.继承或者创建defaulttablemodel类
2.继承abstracttablemodel类,但是其中的getcolumncount和getrowcount,getvalueat,getcolumnname方法必须重写

在这里插入图片描述


Object data[][] = {{"cf","man",new Integer(19),"dangyuan"},
				{"cf","man",new Integer(19),"dangyuan"},
				{"cf","man",new Integer(19),"dangyuan"},
		};
		String colString[] = {"name","sex","age","society"};
		DefaultTableModel tableModel = new DefaultTableModel(data,colString);
		JTable table = new JTable(tableModel);
		
		JScrollPane pane = new JScrollPane(table);
		table.setRowHeight(25);
		JFrame f = new JFrame();
		f.setSize(300,200);
		f.add(pane);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				

示例三:利用Vector创建表格

public class vector_demo {
	JFrame f;
	JTable table;
	JScrollPane pane;
	DefaultTableModel tableModel;
	
	Vector coVector = new Vector();
	Vector dataVector = new Vector();
	
	public vector_demo() {
		coVector.add("name");
		coVector.add("sex");
		coVector.add("age");
		coVector.add("society");
		
		Vector data1 = new Vector();
		data1.add("cf");
		data1.add("man");
		data1.add(19);
		data1.add("dangyuan");
		
		Vector data2 = new Vector();
		data2.add("cf");
		data2.add("man");
		data2.add(19);
		data2.add("dangyuan");
		
		dataVector.add(data1);
		dataVector.add(data2);
		
		tableModel = new DefaultTableModel(dataVector,coVector);
		
		table = new JTable(tableModel);
		table.setRowHeight(25);
		
		JScrollPane pane = new JScrollPane(table);
		JFrame f = new JFrame();
		f.add(pane);
		f.setSize(400,200);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
	public static void main(String[] args) {
		new vector_demo();
	}
}

在使用vector创建时,注意此时的选中行为一个向量,故默认选中一行

二、具体的操作

1.表格的选取

表格选择模式:单选,单区间,多区间 通过对setSelectMode()方法设置选中模式

在这里插入图片描述

	table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);

获取表格被选中的行
在这里插入图片描述

代码如下(示例):

2.行选中事件 ListSelectionEvent

处理行选中事件需要实现ListSelectionListener接口,此接口中只含有一个方法valueChanged(ListSelectionEvent e)
注册监听器对象时,需要先获取表格列表的选择模型

代码如下(示例):

package show_demo;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;


public class select_demo implements ListSelectionListener{
	
	JFrame f;
	JTable table;
	JScrollPane pane;
	DefaultTableModel tableModel;
	
	public select_demo() {
		f = new JFrame();
		String coString[] = {"name","sex","age"};
		Object[][] data = {
				{"cy","man",19},
				{"cy","man",11},
				{"cy","man",12}
		};
		tableModel = new DefaultTableModel(data,coString);
		table = new JTable(tableModel);
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		pane = new JScrollPane(table);
		f.add(pane);
		f.setSize(260,150);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//		注册监听器
		table.getSelectionModel().addListSelectionListener(this);
		
	}
	
	public static void main(String[] args) {
		new select_demo();
	}

	@Override
	public void valueChanged(ListSelectionEvent e) {
		// TODO Auto-generated method stub
		int SelectedRow = table.getSelectedRow();
		
		for(int i = 0;i<table.getColumnCount();i++) {
			System.out.print(table.getValueAt(SelectedRow, i) +"\t");
		}
	}
}

该处使用的url网络请求的数据。


实例题目

题目一:

用Java程序连接自己的建立的数据库表,用table展示并删除

package show_demo;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

public class connect_and_show_demo implements ActionListener {
	
	static Vector dataVector = new Vector();
	JFrame f;
	JTable table;
	JScrollPane pane;
	DefaultTableModel tableModel;
	
	public connect_and_show_demo(DefaultTableModel defaultTableModel) {
		// TODO Auto-generated constructor stub
		tableModel = defaultTableModel;
		table = new JTable(tableModel);
		table.setRowHeight(25);
		
		JScrollPane scrollPane = new JScrollPane(table);
		JFrame f = new JFrame();
		JButton jb = new JButton("删除");
		
		JPanel jPanel = new JPanel(new GridLayout(2,1));
		jPanel.add(scrollPane);
		jPanel.add(jb);
		
		f.add(jPanel);
		
		f.setSize(400,200);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jb.addActionListener(this);
	}
	


	public static void main(String[] args) {
		
		try {
			Connection c = connect();
			if(c != null) {
				System.out.println("连接成功···");
			}
			
			String psql = "SELECT * FROM student";
			
			PreparedStatement pst = c.prepareStatement(psql);
			ResultSet prs = pst.executeQuery();
			Vector colVector = new Vector();
			colVector.add("id");
			colVector.add("name");
			colVector.add("gender");
			colVector.add("score");
//			Vector dataVector = new Vector();
			while(prs.next()) {
				Vector newVector = new Vector();
				newVector.add(prs.getInt(1));
				newVector.add(prs.getString(2));
				newVector.add(prs.getString(3));
				newVector.add(prs.getString(4));
				dataVector.add(newVector);
			}
			DefaultTableModel tabeModel = new DefaultTableModel(dataVector,colVector);
			new connect_and_show_demo(tabeModel);
//			System.out.println(dataVector.get(0));
			pst.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}



	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		int SelectRow = table.getSelectedRow();
		System.out.println(SelectRow);
		Connection c = connect();
		if(SelectRow == -1) {
			disconnect(c);;
			System.exit(0);
		}
		
		int id = (int) tableModel.getValueAt(SelectRow, 0);
//		System.out.println(dataVector.get(0));
		tableModel.removeRow(SelectRow);
		
		String psql = "delete from student where id = ?";
		PreparedStatement pst;
		try {
			pst = c.prepareStatement(psql);
			pst.setInt(1, id);
			pst.executeUpdate();
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
	}
	
	static Connection connect() {
		Connection c = null;
		
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			String password = "0927";
			String usename = "root";
			String url = "jdbc:mysql://localhost:3306/mysql?serverTimeZone=UTC";
			c  = DriverManager.getConnection(url,usename,password);
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return c;
		
	}
	
	static void disconnect(Connection c) {
		try {
			c.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

题目二:

完成以下界面
在这里插入图片描述

package show_demo;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import java.awt.*;


public class system_connect {
	
	static String[] college = {"控计","能动","电气","人文", "核学院", "数理","国教"};
	
	JFrame frame = null;
	static Connection c = null;
	String[] dataStrings = new String[5];
	JTable jTable = null;
	DefaultTableModel defaultTableModel = null;
	Vector dataVectors = null;
	static PreparedStatement pstm = null;
	String[] label = {"项目类型","项目名称","所属学院","项目队长","成员人数"};
	static JPanel panel = null;
	static JPanel panel1 = null;
	static JPanel panel2 = null;
	static Vector<String> colVector = new Vector<String>() ;
	
	
	static void insertSystem(Connection c,String[] dataStrings) throws SQLException {
			
			String psql = "insert into systemTable values(?,?,?,?,?)";
			pstm = c.prepareStatement(psql);
			for(int i=0;i<5;i++) {
				pstm.setString(i+1, dataStrings[i]);
			}
			pstm.executeUpdate();
//			pstm.close();
		
	}
	
	static ResultSet searchSystem(Connection c,String searchString) throws SQLException {
		
//		String[] returnStrings = new String[5];
		String psql = "SELECT * FROM systemTable where 所属学院 = ?";
		pstm = c.prepareStatement(psql);
		pstm.setString(1, searchString);
		ResultSet prs = pstm.executeQuery();
//		pstm.close();
		return prs;
	
}
	
//	构造函数
	public system_connect() throws SQLException {
		// TODO Auto-generated constructor stub
			try {
				Class.forName("com.mysql.cj.jdbc.Driver");
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
//			加载驱动成功
			String url = "jdbc:mysql://localhost:3306/mysql?ServerTimezone = UTC";
			String username = "root";
			String password = "0927";
			try {
				c = DriverManager.getConnection(url,username,password);
				if(c != null) {
					System.out.println("连接成功。。。");
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			
			frame = new JFrame("大学生创新创业管理系统");
			panel = new JPanel(new GridLayout(1,2));
			panel1 = new JPanel(new GridLayout(6,1));
			
			JPanel panel11 = new JPanel();
			panel11.add(new JLabel("项目类型"));
			JRadioButton radioButton1 = new JRadioButton("创新");
			JRadioButton radioButton2 = new JRadioButton("创业");
			ButtonGroup buttonGroup = new ButtonGroup();
			buttonGroup.add(radioButton1);
			buttonGroup.add(radioButton2);
			panel11.add(radioButton1);
			panel11.add(radioButton2);
			panel1.add(panel11);
			
			JPanel panel12 = new JPanel();
			panel12.add(new JLabel("项目名称 "));
			JTextField jTextField1 = new JTextField(8);
			panel12.add(jTextField1);
			panel1.add(panel12);
			
			JPanel panel13 = new JPanel();
			panel13.add(new JLabel("所属学院     "));
			JComboBox comboBox = new JComboBox(college);
			
			panel13.add(comboBox);
			panel1.add(panel13);
			
			JPanel panel14 = new JPanel();
			panel14.add(new JLabel("项目组长"));
			JTextField jTextField2 = new JTextField(8);
			panel14.add(jTextField2);
			panel1.add(panel14);
			
			JPanel panel15 = new JPanel();
			panel15.add(new JLabel("成员人数"));
			JTextField jTextField3 = new JTextField(8);
			panel15.add(jTextField3);
			panel1.add(panel15);
			
			JPanel panel16 = new JPanel();
			JButton jButton1 = new JButton("录入");
			panel16.add(jButton1);
			jButton1.addActionListener(new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
//					创新创业被选中情况
					if(radioButton1.isSelected()) {
						dataStrings[0] = "创新";
						radioButton1.setSelected(false);
					}
					else {
						dataStrings[0] = "创业";
						radioButton2.setSelected(false);
					}
//					项目名称
					dataStrings[1] = jTextField1.getText();
					jTextField1.setText(null);
//					所属院系
					int selectInt = comboBox.getSelectedIndex();
					dataStrings[2] = college[selectInt];
//					项目组长
					dataStrings[3] = jTextField2.getText();
					jTextField2.setText(null);
//					项目人数
					dataStrings[4] = jTextField3.getText();
					jTextField3.setText(null);
					
//					connectTable(jTable, dataStrings);
					try {
//						System.out.println(dataStrings);
						insertSystem(c,dataStrings);
					} catch (SQLException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
				
				});
			panel1.add(panel16);
			
			
			panel2 = new JPanel();
			panel2.setLayout(new BorderLayout());
			
			JPanel panel22 = new JPanel();
			panel22.add(new JLabel("所属学院     "));
			JComboBox comboBox2 = new JComboBox(college);
			JButton jButton = new JButton("查找");
			panel22.add(comboBox2);
			panel22.add(jButton);
			jButton.addActionListener(new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					int selectInt = comboBox2.getSelectedIndex();
					ResultSet prs;
					try {
						prs = searchSystem(c,college[selectInt]);
						dataVectors = new Vector<>();
						while(prs.next()) {
							Vector<String> dataVector = new Vector<String>();
							for(int i = 0;i<5;i++) {
								dataVector.add(prs.getString(i+1));
							}
							dataVectors.add(dataVector);
					} }catch (SQLException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					
					
					
					for(int i=0;i<5;i++) {
						colVector.add(label[i]);
					}
					
//					dataVectors.add(dataVector);
					defaultTableModel = new DefaultTableModel(dataVectors,colVector);
					jTable = new JTable(defaultTableModel);
					JScrollPane jScrollPane = new JScrollPane(jTable);
					panel2.add(jScrollPane,BorderLayout.NORTH);
				}
				});
			
			panel2.add(panel22,BorderLayout.SOUTH);
			
			panel.add(panel1);
			panel.add(panel2);
			
			frame.add(panel);
			frame.setVisible(true);
			frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public static void main(String[] args) throws SQLException {
		// TODO Auto-generated method stub
		new system_connect();
	}

}


  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值