实现代码如下:
package demo;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
public class GUITest {
public static void main(String[] args){
MyJFrame myJFrame = new MyJFrame();
myJFrame.setTitle("浏览器");
myJFrame.setBounds(100, 100, 750, 450);
myJFrame.setVisible(true);
}
}
class MyJFrame extends JFrame{
JMenuBar menuBar;
JMenu menuFile,menuEdit,menuLook,subMenuOpen,menuClear;
JMenuItem menuItemSave,menuItemOpenX,menuItemOpenY,
menuItemCopy,menuItemStop,menuItemRefresh;
JTextArea showTextArea;//文本区域,用来显示多行文本
StringBuffer str = new StringBuffer("");//定义一个可变字符串用来不断获取以及更改文本区域内容
public MyJFrame() {
/////////////创建菜单栏和一级菜单///////////////
menuBar = new JMenuBar();
menuFile = new JMenu("文件(F)");
menuEdit = new JMenu("编辑(E)");
menuLook = new JMenu("查看(L)");
subMenuOpen = new JMenu("打开");
menuClear = new JMenu("清空文本区域(D)");
//////////////////创建菜单项/////////////////
menuItemOpenX = new JMenuItem("打开X");
menuItemOpenY = new JMenuItem("打开Y");
menuItemSave = new JMenuItem("保存");
menuItemCopy = new JMenuItem("复制");
menuItemStop = new JMenuItem("停止");
menuItemRefresh = new JMenuItem("刷新");
////////////////创建文本区域/////////////////
/*
* 这里15,30的话不需要滚动条,所以滚动条自动隐藏,看效果直接指定为150,500
*/
showTextArea = new JTextArea(15,60);
showTextArea.setText(str.toString());
add(new JScrollPane(showTextArea));//将文本区域放入一个滚动布局中
////////////////设置快捷键//////////////////
menuFile.setMnemonic('F');//文件(F)
menuItemSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));//保存 Ctrl+S
//subMenu不设置快捷键
menuEdit.setMnemonic('E');//编辑(E)
menuItemCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));//复制 Ctrl+C
menuLook.setMnemonic('L');//查看(L)
menuClear.setMnemonic('D');//清空文本区域(D)
/////////////将菜单项设置到菜单中/////////////
subMenuOpen.add(menuItemOpenX);
subMenuOpen.add(menuItemOpenY);
menuFile.add(menuItemSave);
menuFile.add(subMenuOpen);
menuEdit.add(menuItemCopy);
menuLook.add(menuItemStop);
menuLook.add(menuItemRefresh);
////////////将菜单设置到菜单栏///////////////
menuBar.add(menuFile);
menuBar.add(menuEdit);
menuBar.add(menuLook);
menuBar.add(menuClear);
////////////将菜单栏设置到窗口//////////////
setJMenuBar(menuBar);
}
}
运行结果: