📄 table.java
字号:
package book;
//********************************************************************
//table类继承JTable 实现数据的刷新,自定义控件。
//********************************************************************
import java.awt.Component;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
public class Table extends JTable{
public Table(NowEditableModel dtm) {
super(dtm);
this.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);//设置宽度不够时自动滚动条
}
public Table() {
super();
}
//该方法用于调整单元格宽度
public void setWidth() {
int i,j,t,r,w;
for(i=0;i<this.getColumnCount();i++){
w=80;
for(j=0;j<this.getRowCount();j++){
TableCellRenderer renderer = this.getCellRenderer(j,i);
Component comp = renderer.getTableCellRendererComponent(this,this.getValueAt(j,i),false,false,j,i);
if(comp.getPreferredSize().width>w){
if(w<comp.getPreferredSize().width){
w=comp.getPreferredSize().width;
}
}
}
System.out.println(w);
this.getColumnModel().getColumn(i).setPreferredWidth(w);
}
}
//检测选种行是否有数据
public ArrayList getSelectRow(int i,int j){
ArrayList List=new ArrayList();
if(this.getRowCount()==0){
JOptionPane.showMessageDialog(this, "没有任何记录");
}
else{
for(int x=0;x<j;x++){
List.add(this.getValueAt(i,x));
}
}
return List;
}
//刷新Table表
public void Renovate(String sql) throws SQLException{
MainDAO mao=new MainDAO();
NowEditableModel model=(NowEditableModel)mao.getTableModel(sql);
this.setModel(model);
this.updateUI();
this.getSelectionModel().setSelectionInterval(0,0);//选中第一行
this.setWidth();
for (int t = 0; t < this.getColumnCount(); t++) {
if(this.getColumnName(t).equals("密码")){
setPassword();
}
}
}
//密码设置 已密码的方式显示
public void setPassword(){
JPasswordField passwordEdit = new JPasswordField();
passwordEdit.setBorder(null);
this.getColumn("密码").setCellEditor(new DefaultCellEditor(passwordEdit));
this.getColumn("密码").setCellRenderer(new DefaultTableCellRenderer() {
//重写 setValue 方法
public void setValue(Object value) {
String password = "";
int wordLong = value.toString().length();
for(int i = 0; i < wordLong; i++)
password += "●";
super.setValue(password);
}
});
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -