📄 a.java
字号:
import javax.sql.*;
import java.sql.*;
////import java.rmi.server.*;
//import java.io;
import java.util.*;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.DefaultCellEditor;
import javax.swing.*;
import javax.swing.table.JTableHeader;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import java.awt.*;
import java.awt.event.*;
class A extends JFrame{
A() throws SQLException{ //对面板进行处理
super("MyTableDemo");
MyTableModel myModel = new MyTableModel();
myModel.setData();
JTable table = new JTable(myModel);
//这个表示清空整个表 table.removeAll()
/*
*确保彻底清空表中数据
public void removeAllRow(){
for(int i = 0; i < table.getRowCount(); i++){
table.removeRow(i);
}
if(table.getRowCount() > 0){
removeAllRow();
}
}
如相再加载可以
removeRow(int i)
然后再重新addRow(int i)
**/
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
JScrollPane scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane, BorderLayout.CENTER);
//添加监听
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}); }
public static void main(String []arg)throws SQLException{
A a= new A();
a.setSize(700,700);
a.setVisible(true);
}
}
class MyTableModel extends AbstractTableModel{
/*做连接的初始值处理*/
Connection cn = null;
ResultSet rs = null ;
Statement stat;
ResultSet rs2 = null ;
Statement stat2;
String DriverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String DriverManagerURL = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs";
String userName = "sa";
String userpassworld ="";
//用于下面获得表中记录数
int count=0;
int i=0;
String rows[][];
//下面是以后要用的列名
String colName[]={"clentID","clentName","clentAge","clentAdrr"};
public void setData() throws SQLException {
//使用桥JDBC-ODBC加ODBC驱动 String DriverManagerURL="jdbc:odbc:LocalServer";
try{
Class.forName(DriverName);
//使用桥JDBC-ODBC加ODBC驱动 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
/*下面是第一种方式时的连接*/
cn = DriverManager.getConnection(DriverManagerURL,userName,userpassworld);
}
catch(java.lang.ClassNotFoundException e){
System.err.println("ClassNotFoundException:");
System.err.println(e.getMessage());
}
if (cn == null){
System.err.println("Connection failed...");
System.exit(0);
}
//下面是用于获得记录的行数
stat = cn.createStatement();
rs = stat.executeQuery("select count(*) from authors");
while(rs.next()){
count= rs.getInt(1);
}
rows=new String[count][4];
stat2 = cn.createStatement();
rs2 = stat2.executeQuery("select * from authors");
while(rs2.next()){
String name = rs2.getString(1);
rows[i][0]=name;
i++;
}
rs.close();
stat.close();
rs2.close();
stat2.close();
cn.close();
}
public int getColumnCount() {
return colName.length;
}
/**
*<br>方法说明:继承AbstractTableModel必须实现的方法
*<br>输入参数:
*<br>返回类型:int 列数
*/
public int getRowCount() {
return rows.length;
}
/**
*<br>方法说明:继承AbstractTableModel必须实现的方法
*<br>输入参数:
*<br>返回类型:String 列名
*/
public String getColumnName(int col) {
return colName[col];
}
/**
*<br>方法说明:继承AbstractTableModel必须实现的方法,获取表格中的数据
*<br>输入参数:int row 行数
*<br>输入参数:int col 列数
*<br>返回类型:Object 数据对象
*/
public Object getValueAt(int row, int col) {
return rows[row][col];
}
/**
*<br>方法说明:实现此方法,获得编辑数据。
*<br>输入参数:
*<br>返回类型:
*/
public void setValueAt(Object value, int row, int col) {
rows[row][col] = String.valueOf(value);
fireTableCellUpdated(row, col);
//如果要删除行为:fireTableRowsDeleted(int firstRow, int lastRow)
}
/**
*<br>方法说明:这个方法不一定需要实现。这里是为了定义可编辑的列
*<br>输入参数:
*<br>返回类型:boolean 是否可编辑
public boolean isCellEditable(int row, int col) {
if (col < 2) {
return false;
} else {
return true;
}
} */
//下面这样设置后便能使我们的客户无法修改表中内容
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public Class getColumnClass(int c) {
if(getValueAt(0, c)!=null)
return getValueAt(0, c).getClass();
else
return "".getClass();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -