Java JFrame窗口程序,包含JMenuBar、JMenu、JMenuItem的用法。
题目
创建一个窗口程序(JFrame),标题栏起名为“浏览器”,有一个菜单条,有“文件”、“编辑”、“查看”3个菜单。“文件”菜单有两个菜单项,一项是“打开”,一项是“保存”,“打开”项做成子菜单,有两个菜单项“打开x”和“打开y”,“保存”项就是普通的菜单项。“编辑”菜单就一个菜单项“复制”。“查看”有两个菜单项“停止”和“刷新”。在菜单及菜单项上添加合适的快捷键。
解决方法:自定义一个类,封装JMenuBar、JMenu、JMenuItem,利用public JMenu getMyJMenu(JMenu menu, char mnemonic)
和public JMenuItem getMyJMenuItem(JMenuItem item, char mnemonic)
返回带setMnemonic(mnemonic);
的JMenu和JMenuItem。
testMain类
package cn.ganggang;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
public class TestMain {
public static void main(String[] args) {
MyWindow myWindow = new MyWindow("浏览器");
JMenu mMenuFile = myWindow.getMyJMenu(new JMenu("文件(F)"), 'F'),
mMenuEdit = myWindow.getMyJMenu(new JMenu("编辑(E)"), 'E'),
mMenuSelect = myWindow.getMyJMenu(new JMenu("查看(L)"), 'L'),
mMenuOpen = myWindow.getMyJMenu(new JMenu("打开(O)"), 'O');
JMenuItem mItemCopy = myWindow.getMyJMenuItem(new JMenuItem("复制(C)"), 'C'),
mItemStop = myWindow.getMyJMenuItem(new JMenuItem("停止(S)"), 'S'),
mItemOpenX = myWindow.getMyJMenuItem(new JMenuItem("打开X"), 'X'),
mItemOpenY = myWindow.getMyJMenuItem(new JMenuItem("打开Y"), 'Y'),
mItemRefresh = myWindow.getMyJMenuItem(new JMenuItem("刷新(R)"), 'R'),
mItemSave = myWindow.getMyJMenuItem(new JMenuItem("保存(A)"), 'A');
mMenuOpen.add(mItemOpenX);
mMenuOpen.add(mItemOpenY);
mMenuFile.add(mMenuOpen);
mMenuFile.add(mItemSave);
mMenuEdit.add(mItemCopy);
mMenuSelect.add(mItemStop);
mMenuSelect.add(mItemRefresh);
myWindow.setMyJMenu(mMenuFile);
myWindow.setMyJMenu(mMenuEdit);
myWindow.setMyJMenu(mMenuSelect);
myWindow.show();
}
}
MyWindow类
package cn.ganggang; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class MyWindow { private String frameTitle; private JFrame frame; private JMenuBar myJMenuBar; private JMenu myJMenu; private JMenuItem myJMenuItem; public MyWindow(String frameTitle) { this.frameTitle = frameTitle; frame = new JFrame(frameTitle); frame.setBounds(400, 100, 500, 500); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public JMenu getMyJMenu(JMenu menu, char mnemonic) { menu.setMnemonic(mnemonic); return menu; } public void setMyJMenu(JMenu myJMenu) { if (myJMenuBar == null) { myJMenuBar = new JMenuBar(); } myJMenuBar.add(myJMenu); } public JMenuItem getMyJMenuItem(JMenuItem item, char mnemonic) { item.setMnemonic(mnemonic); return item; } public void show() { if (myJMenuBar != null) { frame.setJMenuBar(myJMenuBar); frame.validate(); } frame.setVisible(true); } public String getFrameTitle() { return frameTitle; } public void setFrameTitle(String frameTitle) { this.frameTitle = frameTitle; } public JFrame getFrame() { return frame; } public void setFrame(JFrame frame) { this.frame = frame; } public JMenuBar getMyJMenuBar() { return myJMenuBar; } public void setMyJMenuBar(JMenuBar myJMenuBar) { this.myJMenuBar = myJMenuBar; } public JMenuItem getMyJMenuItem() { return myJMenuItem; } public void setMyJMenuItem(JMenuItem myJMenuItem) { this.myJMenuItem = myJMenuItem; } public JMenu getMyJMenu() { return myJMenu; } }