📄 message.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.awt.print.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
//本程序为耗时最多的程序,也是最重要最复杂的程序,主要是各种操作的实现
public class Message extends JFrame implements ActionListener
{
//调用类DBConnection获取Connection实例以方便操作数据库
DBConnection conn=new DBConnection();
Connection con=conn.getConn();
//定义5个表主要是对5种信息的放置
JTable jtb1=new JTable();
DefaultTableModel dtb1=new DefaultTableModel();
JTable jtb2=new JTable();
DefaultTableModel dtb2=new DefaultTableModel();
JTable jtb3=new JTable();
DefaultTableModel dtb3=new DefaultTableModel();
JTable jtb4=new JTable();
DefaultTableModel dtb4=new DefaultTableModel();
JTable jtb5=new JTable();
DefaultTableModel dtb5=new DefaultTableModel();
//card1为操作中查询后的选项卡
CardLayout card1=new CardLayout();
//card2为实现5个表的选项卡
CardLayout card2=new CardLayout();
JPanel jp0=new JPanel();
JPanel s=new JPanel();
String sql1="select * from orderform";
String sql2="select * from reckoning";
String sql3="select * from message";
String sql4="select * from staffmessage";
String sql5="select * from duty";
public int i,j,temp=1;//temp作用相当重要,作为一个事件的介质变量
public Message()
{
setTitle("鞋厂办公系统");
setLocation(110,100);
setSize(800,550);
Container ct=getContentPane();
ct.setLayout(new BorderLayout());
ct.add(select(),BorderLayout.WEST);
ct.add(operate(),BorderLayout.CENTER);
}
//定义操作函数,返回一个面版
public JPanel operate()
{
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
JPanel p=new JPanel();
JButton b1=new JButton("添加");
JButton b2=new JButton("修改");
JButton b3=new JButton("删除");
JButton b4=new JButton("查找");
JButton b5=new JButton("返回");
JButton b6=new JButton("退出");
jp0.setLayout(card1);
jp1.setLayout(new GridLayout(2,2));
jp1.add(b1);
jp1.add(b2);
jp1.add(b3);
jp1.add(b4);
jp2.add(b5);
jp3.add(b6);
jp0.add(jp1,"操作");
jp0.add(jp2,"查询");
setTable1();
JScrollPane s1=new JScrollPane(jtb1);
setTable2();
JScrollPane s2=new JScrollPane(jtb2);
setTable3();
JScrollPane s3=new JScrollPane(jtb3);
setTable4();
JScrollPane s4=new JScrollPane(jtb4);
setTable5();
JScrollPane s5=new JScrollPane(jtb5);
s.setLayout(card2);
s.add(s1,"1");
s.add(s2,"2");
s.add(s3,"3");
s.add(s4,"4");
s.add(s5,"5");
p.setLayout(new BorderLayout());
p.add(jp0,BorderLayout.NORTH);
p.add(s,BorderLayout.CENTER);
p.add(jp3,BorderLayout.SOUTH);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
return p;
}
//定义选择函数,返回面版
public JPanel select()
{
JButton b1=new JButton("订单");
JButton b2=new JButton("帐单");
JButton b3=new JButton("产品信息");
JButton b4=new JButton("员工信息");
JButton b5=new JButton("出勤情况");
JButton b6=new JButton("打印此表");
JButton b7=new JButton("密码修改");
JButton b8=new JButton("员工意见");
JPanel p=new JPanel();
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
JPanel p4=new JPanel();
JPanel c=new JPanel();
p.setLayout(new GridLayout(8,1,10,10));
c.setLayout(new BorderLayout());
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
p.add(b6);
p.add(b7);
p.add(b8);
c.add(p,BorderLayout.CENTER);
c.add(p1,BorderLayout.SOUTH);
c.add(p2,BorderLayout.NORTH);
c.add(p3,BorderLayout.WEST);
c.add(p4,BorderLayout.EAST);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
return c;
}
//逐一实现5种表
public void setTable1()
{
Vector vcm=new Vector();
vcm.add("电脑编号");
vcm.add("客户");
vcm.add("货物");
vcm.add("订金");
vcm.add("总金额");
vcm.add("订货日");
vcm.add("取货日");
vcm.add("备注");
jtb1.setModel(dtb1);
for(i=0;i<vcm.size();i++)
dtb1.addColumn((String)vcm.elementAt(i));
renew(sql1,dtb1);
}
public void setTable2()
{
Vector vcm=new Vector();
vcm.add("电脑编号");
vcm.add("贷款");
vcm.add("还款");
vcm.add("支出");
vcm.add("收入");
vcm.add("盈利");
vcm.add("日期");
vcm.add("备注");
jtb2.setModel(dtb2);
for(i=0;i<vcm.size();i++)
dtb2.addColumn((String)vcm.elementAt(i));
renew(sql2,dtb2);
}
public void setTable3()
{
Vector vcm=new Vector();
vcm.add("电脑编号");
vcm.add("产品编号");
vcm.add("尺寸大小(码)");
vcm.add("生产总数(双)");
vcm.add("价格(元)");
vcm.add("颜色");
vcm.add("备注");
jtb3.setModel(dtb3);
for(i=0;i<vcm.size();i++)
dtb3.addColumn((String)vcm.elementAt(i));
renew(sql3,dtb3);
}
public void setTable4()
{
Vector vcm=new Vector();
vcm.add("电脑编号");
vcm.add("姓名");
vcm.add("职位");
vcm.add("薪金");
vcm.add("上班时间");
vcm.add("假期");
vcm.add("入厂时间");
vcm.add("家庭住址");
vcm.add("出生年月");
vcm.add("备注");
jtb4.setModel(dtb4);
for(i=0;i<vcm.size();i++)
dtb4.addColumn((String)vcm.elementAt(i));
renew(sql4,dtb4);
}
public void setTable5()
{
Vector vcm=new Vector();
vcm.add("电脑编号");
vcm.add("员工");
vcm.add("出勤情况");
vcm.add("员工表现");
vcm.add("日期");
vcm.add("备注");
jtb5.setModel(dtb5);
for(i=0;i<vcm.size();i++)
dtb5.addColumn((String)vcm.elementAt(i));
renew(sql5,dtb5);
}
//重要的函数.可以实现刷新功能.把数据库的数据放入JTable中
public void renew(String sql,DefaultTableModel dt)
{
Str str=new Str();
int lastRow=0;
int lastColumn;
dt.setRowCount(0);
try
{
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())lastRow++;
rs.first();
ResultSetMetaData rsmd=rs.getMetaData();
lastColumn=rsmd.getColumnCount();
for(i=1;i<=lastRow;i++)
{
Vector vcd=new Vector();
for(j=1;j<=lastColumn;j++)
{
vcd.add(str.toChinese(rs.getString(j)));
}
dt.addRow(vcd);
rs.next();
}
rs.close();
stmt.close();
}
catch(SQLException e){}
}
//点击JTable中的一行,获取改行的行数
public int row1()
{
return jtb1.getSelectedRow();
}
public int row2()
{
return jtb2.getSelectedRow();
}
public int row3()
{
return jtb3.getSelectedRow();
}
public int row4()
{
return jtb4.getSelectedRow();
}
public int row5()
{
return jtb5.getSelectedRow();
}
//实现对数据库的变动的操作
public void trange(String sql)
{
try
{
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
stmt.executeUpdate(sql);
}
catch(SQLException ex){}
}
//调用Select类中的构造函数,返回数据库表中的最大值
public int max(String sql)
{
int k=0;
try
{
Statement stmt=con.createStatement();
ResultSet r=stmt.executeQuery(sql);
r.last();
k=r.getInt(1);
}
catch(SQLException e)
{
}
return k;
}
//打印功能的实现
private void printTable(JTable jtb) {
Toolkit kit = Toolkit.getDefaultToolkit(); //获取工具箱
Properties props = new Properties();
props.put("awt.print.printer", "durango"); //设置打印属性
props.put("awt.print.numCopies", "2");
if (kit != null) {
//获取工具箱自带的打印对象
PrintJob printJob = kit.getPrintJob(this, "打印 页面", props);
if (printJob != null) {
Graphics pg = printJob.getGraphics(); //获取打印对象的图形环境
Graphics2D g2 = (Graphics2D) pg; ///
PageFormat pf = new PageFormat(); ///
g2.translate(pf.getImageableX(), pf.getImageableY()); ///转换坐标,确定打印边界
if (pg != null) {
try {
pg.dispose(); // Shoot the page to printer
jtb.printAll(pg); //打印该窗体的组件
}
finally {
pg.dispose(); //注销图形环境pageIndex
}
}
printJob.end(); //结束打印作业
}
}
}
//对各事件的处理
public void actionPerformed(ActionEvent e)
{
if("订单".equals(e.getActionCommand()))
{
temp=1;//记录单击订单时的情形,以下雷同
card2.first(s);//显示第一个版面,以下雷同
}
if("帐单".equals(e.getActionCommand()))
{
temp=2;
card2.first(s);
card2.next(s);
}
if("产品信息".equals(e.getActionCommand()))
{
temp=3;
card2.first(s);
card2.next(s);
card2.next(s);
}
if("员工信息".equals(e.getActionCommand()))
{
temp=4;
card2.last(s);
card2.previous(s);
}
if("出勤情况".equals(e.getActionCommand()))
{
temp=5;
card2.last(s);
}
if("密码修改".equals(e.getActionCommand()))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -