1. 創建主窗體界面
package com.ys; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.KeyStroke; import ys.com.internalFrame.SyssetInternalFrame; public class MainFrm extends JFrame implements ActionListener{ JDesktopPane desktop; //聲明系統主菜單 static final String SYS="系統"; static final String STORE="倉庫管理"; static final String PURCHARCE="采購管理"; static final String BANFANG="板房管理"; //聲明系統子菜單項 //1.系統子菜單項 static final String SYS_SET="系統設置"; static final String SYS_UMANAGER="用戶管理"; static final String SYS_EXIT="退出系統"; //2.倉庫子菜單項 static final String STORE_BUBAN="布板管理"; static final String STORE_IN="入庫管理"; static final String STORE_OUT="出庫管理"; static final String STORE_ORDER="物料訂購單"; static final String STORE_RETURN="物料回貨單"; public MainFrm() { super("YS_Main"); int inset=50; Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); setBounds(inset,inset,screenSize.width-inset*2,screenSize.height-inset*2); //創建圖形用戶界面 desktop=new JDesktopPane(); setContentPane(desktop); setJMenuBar(createMenuBar()); //設置拖放效果 desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE); } private static void createAndShowGUI() { javax.swing.JFrame.setDefaultLookAndFeelDecorated(true); MainFrm frame =new MainFrm(); //實例化主窗體界面 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); //顯示窗體 } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } //創建主菜單項方法createMenu() public JMenu createMenu(String name,int c,JMenuBar menuBar) { JMenu menu=new JMenu(name); menu.setMnemonic(c); menuBar.add(menu); return menu; } //創建子菜單項方法createMenuItem() public void createMenuItem(String name,int keyCode,JMenu menu,boolean sep) { JMenuItem menuItem=new JMenuItem(name); menuItem.setMnemonic(keyCode); menuItem.setAccelerator(KeyStroke.getKeyStroke(keyCode,ActionEvent.ALT_MASK)); menuItem.setActionCommand(name); menuItem.addActionListener(this); menu.add(menuItem); if(sep) menu.addSeparator();//添加分割線 } //定義創建菜單欄的方法createMenuBar() protected JMenuBar createMenuBar() { JMenuBar menuBar=new JMenuBar(); //定義菜單欄工具對象並實例化 //添加菜單項,並初始化菜單項 JMenu menuSYS=createMenu(SYS,KeyEvent.VK_S,menuBar); JMenu menuSTORE=createMenu(STORE,KeyEvent.VK_C,menuBar); createMenu(PURCHARCE,KeyEvent.VK_P,menuBar); createMenu(BANFANG,KeyEvent.VK_B,menuBar); //添加子菜單項 //1.實例化系統子菜單項 createMenuItem(SYS_SET,KeyEvent.VK_0,menuSYS,false); createMenuItem(SYS_UMANAGER,KeyEvent.VK_1,menuSYS,false); createMenuItem(SYS_EXIT,KeyEvent.VK_X,menuSYS,false); //2.實例化倉庫管理子菜單項 createMenuItem(STORE_BUBAN,KeyEvent.VK_B,menuSTORE,false); createMenuItem(STORE_IN,KeyEvent.VK_I,menuSTORE,false); createMenuItem(STORE_OUT,KeyEvent.VK_O,menuSTORE,true); createMenuItem(STORE_ORDER,KeyEvent.VK_D,menuSTORE,false); createMenuItem(STORE_RETURN,KeyEvent.VK_R,menuSTORE,false); return menuBar; } public void actionPerformed(ActionEvent e) { if(SYS_SET.equals(e.getActionCommand())) createSysSetFrame(); if(SYS_EXIT.equals(e.getActionCommand())) quit(); } protected void createSysSetFrame() {//打開用戶設置窗體 SyssetInternalFrame frame = new SyssetInternalFrame(); frame.setVisible(true); //necessary as of 1.3 desktop.add(frame); try { frame.setSelected(true); } catch (java.beans.PropertyVetoException e) {} } protected void quit() { System.exit(0); //退出系統 } }
2. 建立一個帶有笑臉的簡單子窗體
package com.ys.internalFrame; import java.awt.Container; import javax.swing.JInternalFrame; public class SyssetInternalFrame extends JInternalFrame { static int openFrameCount = 0; static final int xOffset = 30, yOffset = 30; public SyssetInternalFrame() { super("系統設置",// + (++openFrameCount), true, //resizable true, //closable true, //maximizable true);//iconifiable //...Create the GUI and put it in the window... Container cp=getContentPane(); FaceBean faceBean=new FaceBean(); faceBean.setMouthWidth(60); faceBean.smile(); //faceBean.frown(); cp.add(faceBean); //...Then set the window size or call pack... setSize(500,300); //Set the window's location. setLocation(xOffset*openFrameCount, yOffset*openFrameCount); } }
3. 定義笑臉控件類
package com.ys.entity; import java.awt.*; import javax.swing.*; public class FaceBean extends JComponent { private int mMouthWidth = 90; //初始化嘴巴默認寬度 private boolean mSmile = true; //默認情況顯示笑臉 @Override public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 臉 int w = getWidth(); int h = getHeight(); int pad = 12; int cw = w - pad * 2; int ch = h - pad * 2; g2.setColor(getBackground()); g2.fillArc(pad, pad, cw, ch, 0, 360); g2.setColor(getForeground()); g2.drawArc(pad, pad, cw, ch, 0, 360); // 嘴 int sw = cw / 2; int sh = ch / 2; if (mSmile == true) g2.drawArc(w / 2 - sw / 2, h / 2 - sh / 2, sw, sh, 270 - mMouthWidth / 2, mMouthWidth); else g2.drawArc(w / 2 - sw / 2, h / 2 + sh / 3, sw, sh, 90 - mMouthWidth / 2, mMouthWidth); // 眼睛 int er = 4; g2.fillArc(w / 2 - cw * 1 / 8 - er / 2, h / 2 - ch / 4 - er, er, er, 0, 360); g2.fillArc(w / 2 + cw * 1 / 8 - er / 2, h / 2 - ch / 4 - er, er, er, 0, 360); } public int getMouthWidth() { return mMouthWidth; } //設置嘴巴寬度的方法 public void setMouthWidth(int mw) { mMouthWidth = mw; repaint(); } //顯示笑臉的方法 public void smile() { mSmile = true; repaint(); } //顯示苦臉的方法 public void frown() { mSmile = false; repaint(); } }