-
查询所有用户的二维表界面
- 代码
import javax.swing.*;
import javax.swing.table.JTableHeader;
import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
public class userTableInfo extends JFrame{
// 定义组件
private JScrollPane scpDemo;
private JTableHeader jth;
private JTable tabDemo;
private JButton btnShow;
// JFrame jf = new JFrame("显示所有用户信息");
public static void main(String[] args){
new userTableInfo();
}
// 构造方法
public userTableInfo(){
// 窗体的相关属性的定义
//必须要创建一个JFrame对象,才可以在function函数中调用这个类!!!
//之前其实已经调用了这个类,只是没有调用到JFrame!!所以显示不出来
//设置面板透明
//.setOpaque(false);
this.setSize(600,400);
this.setLayout(null);
this.setLocation(1220,200);
// 创建组件
this.scpDemo = new JScrollPane();
//显示框
this.scpDemo.setBounds(0,100,600,400);
//按钮
this.btnShow = new JButton("点击刷新并显示数据");
btnShow.setFont(new Font("楷体", NORMAL, 25));
btnShow.setBackground(Color.pink);
this.btnShow.setBounds(0,40,600,32);
// 给按钮注册监听
//给function函数中的show添加响应事件
this.btnShow.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
btnShow_ActionPerformed(ae);
}
});
// 将组件加入到窗体中
add(this.scpDemo);
add(btnShow);
// 显示窗体
this.setVisible(true);
}
// 点击按钮时的事件处理
public void btnShow_ActionPerformed(ActionEvent ae){
// 以下是连接数据源和显示数据的具体处理方法,请注意下
try{
// 获得连接
Class.forName("com.mysql.jdbc.Driver");//根据报错信息修改
String url = "jdbc:mysql://localhost:3307/users?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";//链接的mysql
String user = "root";
String passwd = "123456";
Connection conn = DriverManager.getConnection(url,user,passwd);//处理异常
System.out.println("Mysql连接成功" + conn.toString());//测试是否连接成功
// 建立查询条件
String sql = "select * from userinfo";
PreparedStatement pstm = conn.prepareStatement(sql);
// 执行查询
ResultSet rs = pstm.executeQuery();
// 计算有多少条记录
int count = 0;
while(rs.next()){
count++;
}
rs = pstm.executeQuery();
// 将查询获得的记录数据,转换成适合生成JTable的数据形式
Object[][] info = new Object[count][6];
count = 0;
while(rs.next()){
info[count][0] = rs.getString(1);
info[count][1] = rs.getString(2);
info[count][2] = rs.getString(3);
info[count][3] = rs.getString(4);
info[count][4] = rs.getString(5);
info[count][5] = rs.getString(6);
count++;
}
// 定义表头
String[] title = {"编号","用户名","手机号","性别","住址","邮箱"};
// 创建JTable
this.tabDemo = new JTable(info,title);
tabDemo.setSelectionBackground(Color.pink);
// 显示表头
this.jth = this.tabDemo.getTableHeader();
jth.setBackground(Color.orange);
// 将JTable加入到带滚动条的面板中
this.scpDemo.getViewport().add(tabDemo);
}catch(ClassNotFoundException cnfe){
cnfe.printStackTrace();
JOptionPane.showMessageDialog(null,"数据源错误","错误",JOptionPane.ERROR_MESSAGE);
}catch(SQLException sqle){
JOptionPane.showMessageDialog(null,"数据操作错误","错误",JOptionPane.ERROR_MESSAGE);
}
}
}