📄 mainframe.java
字号:
package windows;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.PropertyVetoException;
import java.lang.reflect.Constructor;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BoxLayout;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.BevelBorder;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
import sun.java2d.Disposer;
import Login.Login;
public class mainFrame {
private JPanel sysManagePanel;
private JDesktopPane desktopPane;
private JFrame frame;
private JLabel backLabel;
//private JInternalFrame old = null;
private String old = null;
// 创建窗体的Map类型集合对象
private Map<String, JInternalFrame> ifs = new HashMap<String, JInternalFrame>();
public mainFrame() {
frame = new JFrame("E时代仓库信息管理系统");
frame.getContentPane().setBackground(new Color(204,255,255));//设置菜单的背景色
frame.addComponentListener(new FrameListener());
frame.getContentPane().setLayout(new BorderLayout());
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setBounds(d.width/6, d.height/12, d.width-d.width/3, d.height-d.height/3);//设置窗体合适的位置
//frame.setBounds(100, 100, 800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
backLabel = new JLabel();// 背景标签
backLabel.setVerticalAlignment(SwingConstants.TOP);
backLabel.setHorizontalAlignment(SwingConstants.CENTER);
updateBackImage(); // 更新或初始化背景图片
desktopPane = new JDesktopPane();
desktopPane.add(backLabel, new Integer(Integer.MIN_VALUE));
frame.getContentPane().add(desktopPane);
JTabbedPane navigationPanel = createNavigationPanel(); // 创建导航标签面板
//navigationPanel.setSize(20, 20);
frame.getContentPane().add(navigationPanel, BorderLayout.NORTH);
frame.setVisible(true);
frame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
JOptionPane j = new JOptionPane("你是否退出E时代仓库信息管理系统?", JOptionPane.QUESTION_MESSAGE,JOptionPane.YES_NO_OPTION,null,new Object[]{" 是 "," 否 "});
Object[] xx = j.getOptions();
int i=JOptionPane.showOptionDialog(frame,"你是否退出E时代仓库信息管理系统?","E时代仓库信息管理系统退出系统提示",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,xx," 是 ");
if(i==0)
System.exit(0);
}
});
//系统退出处理
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Login();//首先打开登录窗体
//new mainFrame();
}
});
}
private JTabbedPane createNavigationPanel() { // 创建导航标签面板的方法
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setFocusable(false);
//tabbedPane.setBackground(new Color(119, 98, 228));
tabbedPane.setBackground(new Color(204, 255,255));
tabbedPane.setBorder(new BevelBorder(BevelBorder.RAISED));
//tabbedPane.setBounds(0, 0, 10, 10);
JPanel CKManagePanel = new JPanel(); // 仓库管理面板
CKManagePanel.setBackground(new Color(204, 255,255));
CKManagePanel.setLayout(new BoxLayout(CKManagePanel,BoxLayout.X_AXIS));
CKManagePanel.add(createFrameButton("入库管理", "RKGuanLi"));//入库管理
CKManagePanel.add(createFrameButton("出库管理", "CKGuanLi"));//出库管理
CKManagePanel.add(createFrameButton("库存盘点", "KCPanDian"));//库存盘点
JPanel XXSearchPanel = new JPanel(); // 信息查询面板
XXSearchPanel.setBackground(new Color(204,255,255));
XXSearchPanel.setLayout(new BoxLayout(XXSearchPanel,BoxLayout.X_AXIS));
XXSearchPanel.add(createFrameButton("入库查询", "RKChaXun"));//入库查询
XXSearchPanel.add(createFrameButton("出库查询", "CKChaXun"));//出库查询
JPanel GLYManagePanel = new JPanel();// 管理员管理面板
GLYManagePanel.setBackground(new Color(204,255,255));
GLYManagePanel.setLayout(new BoxLayout(GLYManagePanel,BoxLayout.X_AXIS));
GLYManagePanel.add(createFrameButton("添加管理员", "TJGLY"));//添加管理员
GLYManagePanel.add(createFrameButton("删除管理员", "SCGLY"));//删除管理员
GLYManagePanel.add(createFrameButton("修改密码", "XGMM"));//修改密码
GLYManagePanel.add(createFrameButton("权限管理", "QXGL"));//权限管理
JPanel XTManagePanel = new JPanel(); // 系统管理面板
XTManagePanel.setBackground(new Color(204,255,255));
XTManagePanel.setLayout(new BoxLayout(XTManagePanel,BoxLayout.X_AXIS));
XTManagePanel.add(createFrameButton("重新登录", "CXDL"));//重新登录
XTManagePanel.add(createFrameButton("退出系统", "TCXT"));//退出系统
JPanel HelpPanel = new JPanel(); // 帮助面板
HelpPanel.setBackground(new Color(204,255,255));
HelpPanel.setLayout(new BoxLayout(HelpPanel,BoxLayout.X_AXIS));
HelpPanel.add(createFrameButton("关于我们", "GYWM"));//关于我们
HelpPanel.add(createFrameButton("查看帮助", "CKBZ"));//查看帮助
tabbedPane.addTab(" 仓库管理 ", null, CKManagePanel, "仓库管理");
tabbedPane.addTab(" 信息查询 ", null, XXSearchPanel, "信息查询");
tabbedPane.addTab(" 管理员管理 ", null, GLYManagePanel, "管理员管理");
tabbedPane.addTab(" 系统管理 ", null, XTManagePanel, "系统管理");
tabbedPane.addTab(" 帮助 ", null, HelpPanel, "帮助");
return tabbedPane;
}
/** *********************辅助方法************************* */
// 为内部窗体添加Action的方法(按钮图标)
private JButton createFrameButton(String fName, String cname) {
String imgUrl = "res/ActionIcon/" + fName + ".png";
String imgUrl_roll = "res/ActionIcon/" + fName + "_roll.png";
String imgUrl_down = "res/ActionIcon/" + fName + "_down.png";
Icon icon = new ImageIcon(imgUrl);
Icon icon_roll = null;
if (imgUrl_roll != null)
icon_roll = new ImageIcon(imgUrl_roll);
Icon icon_down = null;
if (imgUrl_down != null)
icon_down = new ImageIcon(imgUrl_down);
Action action = new openFrameAction(fName, cname, icon);
JButton button = new JButton(action);
//button.setMargin(new Insets(0,0, 0, 0));//
button.setMaximumSize(new Dimension(110,100));
button.setHideActionText(true);
button.setFocusPainted(false);
button.setBorderPainted(false);
button.setContentAreaFilled(false);
if (icon_roll != null)
button.setRolloverIcon(icon_roll);
if (icon_down != null)
button.setPressedIcon(icon_down);
return button;
}
// 获取内部窗体的唯一实例对象
private JInternalFrame getIFrame(String frameName) {
JInternalFrame jf = null;
//JOptionPane.showMessageDialog(null, frameName);
if (!ifs.containsKey(frameName)) {
try {
Class fClass = Class.forName("windows." + frameName);
Constructor constructor = fClass.getConstructor(null);
jf = (JInternalFrame) constructor.newInstance(null);
ifs.put(frameName, jf);
//JOptionPane.showMessageDialog(null, frameName);
} catch (Exception e) {
e.printStackTrace();
}
} else
jf = ifs.get(frameName);
return jf;
}
// 更新背景图片的方法
private void updateBackImage() {
if (backLabel != null) {
int backw = mainFrame.this.frame.getWidth();
int backh = frame.getHeight();
backLabel.setSize(backw, backh);
backLabel.setText("<html><body><image width='" + backw
+ "' height='" + (backh -100) + "' src="
+ mainFrame.this.getClass().getResource("welcome.jpg")
+ "'></img></body></html>");
}
}
// 窗体监听器
private final class FrameListener extends ComponentAdapter {
public void componentResized(final ComponentEvent e) {
updateBackImage();
}
}
// 主窗体菜单项的单击事件监听器
protected final class openFrameAction extends AbstractAction {
private String frameName = null;
private openFrameAction() {
}
public openFrameAction(String cname, String frameName, Icon icon) {
this.frameName = frameName;
// JOptionPane.showMessageDialog(null, frameName);
putValue(Action.NAME, cname);
putValue(Action.SHORT_DESCRIPTION, cname);
putValue(Action.SMALL_ICON, icon);
}
public void actionPerformed(final ActionEvent e) {
JInternalFrame jf = getIFrame(frameName);
//JInternalFrame old = getIFrame(frameName);
if(frameName.equals("TCXT"))//退出系统
{
JOptionPane j = new JOptionPane("你是否退出E时代仓库信息管理系统?",JOptionPane.QUESTION_MESSAGE,JOptionPane.YES_NO_OPTION,null,new Object[]{" 是 "," 否 "});
Object[] xx = j.getOptions();
int i=JOptionPane.showOptionDialog(frame,"你是否退出E时代仓库信息管理系统?","E时代仓库信息管理系统退出系统提示",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,xx," 是 ");
if(i==0)
System.exit(0);
}
if(frameName.equals("CXDL"))//重新登录
{
JOptionPane j = new JOptionPane("你是否重新登录E时代仓库信息管理系统?", JOptionPane.QUESTION_MESSAGE,JOptionPane.YES_NO_OPTION,null,new Object[]{" 是 "," 否 "});
Object[] xx = j.getOptions();
int i=JOptionPane.showOptionDialog(frame,"你是否重新登录E时代仓库信息管理系统?","E时代仓库信息管理系统重新登录提示",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,xx," 是 ");
if(i==0)
{frame.dispose();
new Login();
}
}
//JOptionPane.showMessageDialog(null, frameName);
// 在内部窗体闭关时,从内部窗体容器ifs对象中清除该窗体。
jf.addInternalFrameListener(new InternalFrameAdapter() {
public void internalFrameClosed(InternalFrameEvent e) {
ifs.remove(frameName);
//ifs.remove(old);
}
});
if (jf.getDesktopPane() == null) {
//JOptionPane.showMessageDialog(null, "dddddd");
if(old!=null){
JInternalFrame oldjf = getIFrame(old);//关闭其他打开的窗体
//desktopPane.remove(oldjf);
oldjf.dispose();
desktopPane.updateUI();
//JOptionPane.showMessageDialog(null, old);
//updateBackImage();
}
desktopPane.add(jf);//打开新窗体
old = frameName;
//JOptionPane.showMessageDialog(null, old);
//JOptionPane.showMessageDialog(null, old);
//JOptionPane.showMessageDialog(null, jf.getName());
//desktopPane.remove(jf);
//jf.setBounds(200, 200, 420, 170);
//JOptionPane.showMessageDialog(null, desktopPane.getBounds().getHeight());
//JOptionPane.showMessageDialog(null, desktopPane.getBounds().width);
jf.setVisible(true);
}
try {
jf.setSelected(true);
} catch (PropertyVetoException e1) {
e1.printStackTrace();
}
}
}
static {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -