package table;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
public class MyTable extends JFrame implements MouseListener, ActionListener {
public static void main(String[] args) {
new MyTable();
}
JPanel contentPane;
String[] title = { "学号", "姓名", "年龄", "性别" };
String[][] data = { { "1", "刘敏", "23", "女" }, { "2", "李四", "23", "男" },
{ "3", "王瓜", "38", "男" }, { "4", "谢二", "50", "男" } };
DefaultTableModel modal = new DefaultTableModel(data, title);
JTable jTable1 = new JTable(modal) {
// 设置是否可以编辑 如果不是第一列可以编辑
public boolean isCellEditable(int row, int column) {
if (column == 0) {
return false;
} else {
return true;
}
}
};
JScrollPane jScrollPane1 = new JScrollPane(jTable1,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
JLabel labNum = new JLabel();
JTextField txtNum = new JTextField();
JLabel labName = new JLabel();
JTextField txtName = new JTextField();
JLabel labAge = new JLabel();
JTextField txtAge = new JTextField();
JLabel labSex = new JLabel();
JTextField txtSex = new JTextField();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
// 创建表头
public MyTable() {
setVisible(true);// 设置可见
setDefaultCloseOperation(EXIT_ON_CLOSE);// 设置点击关闭按钮时可以退出
contentPane = (JPanel) getContentPane();// 得到JFrame的内容面板
contentPane.setLayout(null);// 面板布局模式为null
setSize(new Dimension(800, 600));// 封装了一个构件的高度和宽度 设置方格的大小
setTitle("Frame Title");// 设置标题
//自定义图形左上角的图片 也就是logo
Toolkit tk = Toolkit.getDefaultToolkit();
Image i = tk.getImage(this.getClass().getResource("1.jpg"));
this.setIconImage(i);
this.setResizable(false);//右上角的变大按钮失效
//背景画出来:URL:图片的地址,通过类的反射。
ImageIcon img = new ImageIcon(this.getClass().getResource("1.jpg"));
//JLabel作为背景层
JLabel imgLabel = new JLabel(img);
//把这个JLabel放到背景层去
this.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));//把图片放在最底层
//设置大小
imgLabel.setBounds(0,0,800, 600);
contentPane.setOpaque(false);//设置内容层透明
jScrollPane1.setBounds(new Rectangle(82, 35, 220, 203));
// Rectangle 指定了坐标空间中的一个区域,
// 通过 Rectangle 对象的左上顶点的坐标(x,y)、宽度和高度可以定义这个区域。
labNum.setText("学号:");
labNum.setBounds(new Rectangle(29, 259, 87, 49));
txtNum.setBounds(new Rectangle(78, 271, 200, 23));
labName.setText("姓名:");
labName.setBounds(new Rectangle(29, 306, 73, 43));
txtName.setBounds(new Rectangle(78, 321, 200, 19));
labAge.setText("年龄:");
labAge.setBounds(new Rectangle(29, 352, 82, 43));
txtAge.setBounds(new Rectangle(78, 364, 200, 22));
labSex.setText("性别:");
labSex.setBounds(new Rectangle(29, 408, 70, 41));
txtSex.setBounds(new Rectangle(78, 413, 200, 22));
jTable1.addMouseListener(this);
// 给这个jtabel添加监听 把选中的行数据加载到文本输入框中
jButton1.setBounds(new Rectangle(32, 460, 170, 35));
jButton1.setText("删除选中的列");
jButton1.addActionListener(this);
jButton2.setBounds(new Rectangle(239, 462, 138, 33));
jButton2.setText("增 加");
jButton2.addActionListener(this);
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
contentPane.add(jScrollPane1);
contentPane.add(labName);
contentPane.add(labAge);
contentPane.add(labSex);
contentPane.add(labNum);
contentPane.add(txtNum);
contentPane.add(txtName);
contentPane.add(txtAge);
contentPane.add(txtSex);
contentPane.add(jButton1);
contentPane.add(jButton2);
// jScrollPane1.getViewport().add(jTable1);//getViewport():设置可见
}
@Override
public void actionPerformed(ActionEvent e) {
if (jButton1 == e.getSource()) {
// 得到要删除的行
int row = jTable1.getSelectedRow();
if (row != -1) {
TableModel tableModel = jTable1.getModel();
DefaultTableModel dtm = (DefaultTableModel) tableModel;
/*
* TableModel是一个接口 没有删除一行的方法
* AbstractTableModel是TableModel的实现类(抽象类) 也没有删除一行的方法
* DefaultTableModel继承了AbstractTableModel 这个类中有删除一行的方法
*/
dtm.removeRow(row);
txtNum.setText("");
txtName.setText("");
txtAge.setText("");
txtSex.setText("");
/*
* 删除所有行的方法:
int count=dtm.getRowCount();
for(int i=0;i<count;i++){
System.out.println(count-i-1);
dtm.removeRow(count-i-1);
}
*/
} else {
System.out.println("请选中删除hag");
}
} else if (jButton2 == e.getSource()) {
// 添加记录
String id = txtNum.getText();
String Name = txtName.getText();
String Age = txtAge.getText();
String Sex = txtSex.getText();
String[] s = { id, Name, Age, Sex };
modal.addRow(s);
txtNum.setText("");
txtName.setText("");
txtAge.setText("");
txtSex.setText("");
}
}
@Override
public void mouseClicked(MouseEvent e) {
int row = jTable1.getSelectedRow();// 得到鼠标点击的行
TableModel model = jTable1.getModel();// ??
if (row != -1) {// 如果不是第一列
// 获取行,列
String id = model.getValueAt(row, 0).toString();
String Name = model.getValueAt(row, 1).toString();
String Age = model.getValueAt(row, 2).toString();
String Sex = model.getValueAt(row, 3).toString();
txtNum.setText(id);
txtName.setText(Name);
txtAge.setText(Age);
txtSex.setText(Sex);
}
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
}

kenneth
- 粉丝: 38
最新资源
- 10kV氧化锌避雷器技术规范.doc
- 海氏评估系统因素表及说明.doc
- 知名房地产工程现场精细化管理讲义(附案例).pdf
- 白云国际会议中心花城厅(原一层多功能厅)维护保养、1号楼东座三楼客房改造项目招标文件(第一标段).docx
- 3d3s吊车梁设计流程.doc
- 微信小程序开发资源汇总 .zip
- 微信小程序-公众号热门文章信息流.zip
- 淘宝客项目,支持App,微信小程序,QQ小程序.zip
- 国家电网公司优秀QC成果1764页-1953页.docx
- 酒店类微信小程序模板.zip
- 软弱土地基处理—教学讲稿.ppt
- 安全文明施工监理细则.doc
- 对工程总承包相关问题的认识.doc
- 患者外跑应急演练脚本.doc
- 桥深基坑土钉墙支护施工方案.doc
- 11G101系平法新规则交底广联达实训课程.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


