📄 outgorecordtable.java
字号:
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.table.*;
//**********************************************************
//这是一个建立“支出记录”的类
//**********************************************************
class OutgoRecordTable extends JFrame {
public OutgoRecordTable() {
setSize(500,490);
setResizable(false);
setLocation(150,50);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
});
getContentPane().setLayout(new FlowLayout());
//将table1加入到JScrollPane
getContentPane().add(new JScrollPane(table1));
button1.addActionListener(new ActionLis(1));
button2.addActionListener(new ActionLis(2));
getContentPane().add(button1);
getContentPane().add(button2);
}
String[] field={"日期","名称","数量(元)","备注"};
//设定表格的字段
Object[][] data={/**{"2002-2-16",
new String("购买此软件"),
new Double(3650),new String
("用来管理财务")}*/};
int delrow;
boolean can_del=true;
//该方法用来增加一笔记录
public void addRecord(String date,String name,double amount,
String explanation) {
Object newdata[]={date,name,
new Double(amount),explanation};
tmodel.addRow(newdata);
}
//该方法用来删除所选的一笔记录
public void delSelectedRecord() {
delrow=table1.getSelectedRow();
tmodel.removeRow(delrow);
}
//设定数据
DefaultTableModel tmodel=new DefaultTableModel(data,field);
//建立表格格式为DefaultTableModel
JTable table1=new JTable(tmodel);
JButton button1=new JButton("添加");
JButton button2=new JButton("删除");
class ActionLis implements ActionListener {
int select;
public ActionLis(int select) {
this.select=select;
}
public void actionPerformed(ActionEvent evt) {
if(select==1) {
String date=JOptionPane.showInputDialog
("请输入(按照格式:2002-4-10)日期:");
String name=JOptionPane.showInputDialog
("请输入这笔支出的名称:");
double amount=Double.parseDouble(JOptionPane.showInputDialog
("请输入这笔支出的数量:"));
String explanation=JOptionPane.showInputDialog
("请输入有关这笔支出的备注:");
addRecord(date,name,amount,explanation);
can_del=false;
One_record[] record;
//***************** 以下是提取文件操作 ******************************
try {
//读原来的文件
RandomAccessFile in=new
RandomAccessFile("records_o.dat","rw");
int n=(int)(in.length()/One_record.RECORD_SIZE);
record=new One_record[n];
for(int i=n-1;i>=0;i--) {
record[i]=new One_record();
in.seek(i*One_record.RECORD_SIZE);
record[i].readData(in);
}
//保存原有的和现在的
One_record oner=new One_record(date,name,amount,explanation);
DataOutputStream out=new DataOutputStream(new
FileOutputStream("records_o.dat"));
for(int i=0;i<record.length;i++)
record[i].writeData(out);
oner.writeData(out);
out.close();
}
catch(IOException ioe) {
System.out.print("Error: "+ioe);
System.exit(1);
}
//****************** 结束保存输入的操作 ********************************
}
else if(select==2) {
if(can_del) {
delSelectedRecord();
One_record[] record;
//***************** 以下是提取文件操作 ******************************
try {
//读原来的文件
RandomAccessFile in=new
RandomAccessFile("records_o.dat","rw");
int n=(int)(in.length()/One_record.RECORD_SIZE);
record=new One_record[n];
for(int i=n-1;i>=0;i--) {
record[i]=new One_record();
in.seek(i*One_record.RECORD_SIZE);
record[i].readData(in);
}
//保存删除以后的
DataOutputStream out=new DataOutputStream(new
FileOutputStream("records_o.dat"));
for(int i=0;i<record.length-delrow-1;i++)
record[i].writeData(out);
for(int j=record.length-delrow;j<record.length;j++)
record[j].writeData(out);
out.close();
}
catch(IOException ioe) {
System.out.print("Error: "+ioe);
System.exit(1);
}
//****************** 结束保存删除的操作 ********************************
}
else {
JOptionPane.showMessageDialog(table1,
"Sorry!……刚添加就想删除,不行!\n如果实在想删除,请重启本窗口!");
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -