📄 mainapp.java
字号:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.sql.*;
import java.util.*;
import edu.njust.cs.*;
class MainApp extends JFrame{
//系统启动时的等待画面
private JFrame splashScreen=null;
//收费结算菜单
private JMenu JSSFMenu=new JMenu("结算收费(J)");
private JMenuItem DBCZItem=new JMenuItem("电表出帐/审核(A)");
private JMenuItem DBJFItem=new JMenuItem("电表缴费(F)");
//基础资料菜单
private JMenu JCZLMenu=new JMenu("基础资料(Z)");
private JMenuItem GYItem=new JMenuItem("雇员资料(G)");
private JMenuItem CBBItem=new JMenuItem("抄表班(C)");
private JMenuItem SFBItem=new JMenuItem("收费班(S)");
private JMenuItem FLItem=new JMenuItem("费率(F)");
private JMenuItem DBItem=new JMenuItem("电表资料(D)");
//设置菜单
private JMenu SZMenu=new JMenu("设置(C)");
private JMenuItem SysConfigItem=new JMenuItem("系统参数设置...(S)");
//帮助菜单
private JMenu HelpMenu=new JMenu("帮助(H)");
JMenuItem aboutItem=new JMenuItem("关于本程序...(A)");
//内容窗格
private Container contentPane;
//当前内容窗格中的面板
private JPanel selectedPanel=null;
//状态信息
JLabel labStatusContent=null;
//登录用户
private JLabel labUserContent=null;
//数据库连接
Connection con=null;
//参数信息
private Properties prop=null;
public MainApp(){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
showSplashScreen();
}
});
//创建菜单
setIconImage(new ImageIcon("image/title20.jpg").getImage());
this.setTitle("结算收费演示系统");
contentPane=getContentPane();
//创建菜单
constructMenu();
//创建状态条
constructStatusPanel();
//读入系统参数
prop=SqlUtil.loadProperty("config/config.properties");
//建立数据库连接
connectToDB();
//验证用户
login();
//添加导航面板
if(con!=null)
setSelectedPanel(new NavigatorPanel(this));
SwingUtilities.invokeLater(new Runnable(){
public void run(){
hideSplashScreen();
}
});
}
//连接到数据库
public void connectToDB(){
try{
con=SqlUtil.acquireConnection(prop.getProperty("DB_IP"),
prop.getProperty("DB_PORT"),
prop.getProperty("DB_NAME"),
prop.getProperty("DB_USER_NAME"),
prop.getProperty("DB_USER_PWD"));
}catch(Exception e){
con=null;
this.labStatusContent.setText("不能连接到数据库!"+
"请修改系统设置后重新启动该程序. "
+e.toString());
return;
}
}
public void showSplashScreen(){
//取得屏幕大小
Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
ImageIcon image=null;
try{
image=new ImageIcon("image/splash.jpg");
}catch(Exception e){
System.out.println(e);
}
JLabel splashLabel = new JLabel(image);
splashScreen = new JFrame();
//去掉JFrame的装饰边框
splashScreen.setUndecorated(true);
splashScreen.getContentPane().add(splashLabel);
splashScreen.pack();
int width=image.getImage().getWidth(null);
int height=image.getImage().getHeight(null);
//快闪屏幕居中
splashScreen.setLocation(new Point(((int)d.getWidth()-width)/2,
((int)d.getHeight()-height)/2));
splashScreen.setVisible(true);
}
public void hideSplashScreen(){
splashScreen.setVisible(false);
splashScreen=null;
}
public void constructMenu(){
//构建菜单
JMenuBar menuBar=new JMenuBar();
//收费结算菜单----------------BEGIN
JSSFMenu.setMnemonic(KeyEvent.VK_J);
//电表出帐
DBCZItem.setMnemonic(KeyEvent.VK_A);
DBCZItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
MainApp.this.setSelectedPanel(new DBCZPanel(MainApp.this,con));
}
});
JSSFMenu.add(DBCZItem);
//电表缴费
DBJFItem.setMnemonic(KeyEvent.VK_F);
DBJFItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
MainApp.this.setSelectedPanel(new DBSFPanel(MainApp.this,con));
}
});
JSSFMenu.add(DBJFItem);
menuBar.add(JSSFMenu);
//收费结算菜单----------------END
//基础资料菜单----------------BEGIN
JCZLMenu.setMnemonic(KeyEvent.VK_Z);
//雇员
GYItem.setMnemonic(KeyEvent.VK_G);
GYItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
MainApp.this.setSelectedPanel(new GYPanel(MainApp.this,con));
}
});
JCZLMenu.add(GYItem);
//分隔线
JCZLMenu.addSeparator();
//抄表班
CBBItem.setMnemonic(KeyEvent.VK_C);
CBBItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
MainApp.this.setSelectedPanel(new CBBPanel(MainApp.this,con));
}
});
JCZLMenu.add(CBBItem);
//收费班
SFBItem.setMnemonic(KeyEvent.VK_S);
SFBItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
MainApp.this.setSelectedPanel(new SFBPanel(MainApp.this,con));
}
});
JCZLMenu.add(SFBItem);
//费率
FLItem.setMnemonic(KeyEvent.VK_F);
FLItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
MainApp.this.setSelectedPanel(new FLPanel(MainApp.this,con));
}
});
JCZLMenu.add(FLItem);
//分隔线
JCZLMenu.addSeparator();
//电表
DBItem.setMnemonic(KeyEvent.VK_D);
DBItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
MainApp.this.setSelectedPanel(new DBPanel(MainApp.this,con));
}
});
JCZLMenu.add(DBItem);
menuBar.add(JCZLMenu);
//设置菜单-------------BEGIN
SZMenu.setMnemonic(KeyEvent.VK_C);
//系统参数设置
SysConfigItem.setMnemonic(KeyEvent.VK_S);
SysConfigItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new ConfigDialog(MainApp.this,"参数设置",true).show();
}
});
SZMenu.add(SysConfigItem);
menuBar.add(SZMenu);
//设置菜单-------------END
//帮助菜单-------------BEGIN
HelpMenu.setMnemonic(KeyEvent.VK_H);
//关于
aboutItem.setMnemonic(KeyEvent.VK_A);
aboutItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new About(MainApp.this,"关于",true).show();
}
});
HelpMenu.add(aboutItem);
menuBar.add(HelpMenu);
//帮助菜单-----------END
setJMenuBar(menuBar);
}
//创建状态条
public void constructStatusPanel(){
JPanel statusPanel=new JPanel();
Border loweredBevelBorder=BorderFactory.createLoweredBevelBorder();
statusPanel.setLayout(new GridBagLayout());
JLabel labStatus=new JLabel(" 提示信息 ");
labStatusContent=new JLabel();
JLabel labUser=new JLabel(" 用户名 ");
labUserContent=new JLabel();
labUserContent.setPreferredSize(new Dimension(90,3));
labUser.setBorder(loweredBevelBorder);
labUserContent.setBorder(loweredBevelBorder);
labStatus.setBorder(loweredBevelBorder);
labStatusContent.setBorder(loweredBevelBorder);
LayoutUtil.add(statusPanel,GridBagConstraints.NONE,
GridBagConstraints.CENTER,0,0,0,0,1,1,labStatus);
LayoutUtil.add(statusPanel,GridBagConstraints.BOTH,
GridBagConstraints.CENTER,100,100,1,0,1,1,labStatusContent);
LayoutUtil.add(statusPanel,GridBagConstraints.NONE,
GridBagConstraints.CENTER,0,0,2,0,1,1,labUser);
LayoutUtil.add(statusPanel,GridBagConstraints.VERTICAL,
GridBagConstraints.CENTER,0,100,3,0,1,1,labUserContent);
contentPane.add(statusPanel,BorderLayout.SOUTH);
}
public void setSelectedPanel(JPanel p){
if(selectedPanel!=null)
contentPane.remove(selectedPanel);
selectedPanel=p;
contentPane.add(selectedPanel,"Center");
this.validate();
}
public void login(){
int count=0;
while(count++<4){//最多有3次输入机会
if(count==4)
System.exit(-1);
LoginDialog lg=new LoginDialog(this.splashScreen,"登录",true);
lg.show();
lg.toFront();
if(lg.getActionCode()==LoginDialog.OK){
if(!isValidLogin(lg.getUser(),lg.getPwd()))
JOptionPane.showMessageDialog(this,
"错误的用户名或密码!",
"提示",
JOptionPane.INFORMATION_MESSAGE);
else{ //成功登录
break;
}
}
else
System.exit(-1);
}
}
//判断用户和密码是否正确
public boolean isValidLogin(String u,String p){
boolean flag=true;
try{
PreparedStatement sql=con.prepareStatement("select * from UserT where UserID=? AND Pwd=?");
sql.setString(1,u);
sql.setString(2,p);
ResultSet rs=sql.executeQuery();
if(rs.next()) flag=true;
else flag=false;
rs.close();
}catch(Exception e){
System.out.println(e);
flag=false;
}
return flag;
}
public static void main(String []args){
Font font=new Font("楷体", 0, 12);
SetFont.setFont(font);//设置全局字体
MainApp ma=new MainApp();
ma.setDefaultCloseOperation(EXIT_ON_CLOSE);
ma.setSize(600,400); //设置主画面初始大小
ma.show();
//满屏显示
ma.setExtendedState(MAXIMIZED_BOTH);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -