实验21  Java Swing的菜单和工具栏
1、主要教学目标
(1)掌握Java的Java Swing的菜单组件;
(2)理解Java Swing的JMenu;
(3)理解JFrame类菜单方法。
2、重点内容
掌握JFrame类常见的菜单方法和定义。
讲授内容
一、Java Swing的菜单栏
§1.1 菜单栏
菜单栏是一组命令按钮,位于菜单下。在Java中Swing中,实现一个菜单栏,需要使用三个对象。一个JMenuBar对象,一个 JMenu和JMenuItem对象。
1、新建一个含有MENU的JFrame,包括一个JMenu对象,JMenuBar对象和JMenuItem对象,
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;
class Menu21_1 extends JFrame
{
public Menu21_1()
{
JMenuBar menubar = new JMenuBar();
JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
JMenuItem fileitem = new JMenuItem("Exit");
fileitem.setMnemonic(KeyEvent.VK_E);
fileitem.setToolTipText("Exit Application");
fileitem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
}
});
file.add(fileitem);
menubar.add(file);
setJMenuBar(menubar);
setSize(500,500);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
public class App21_1
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
Menu21_1 ex = new Menu21_1();菜单栏包括
ex.setVisible(true);
}
}
);
}
}
图1:显示菜单import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;
class Menu21_2 extends JFrame {
public Menu21_2() {
《Java程序设计》第二十一
讲教案
initUI();
}
public final void initUI() {
JMenuBar menubar = new JMenuBar();
ImageIcon icon = new ImageIcon(getClass().getResource("exit.png"));
JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
JMenuItem eMenuItem = new JMenuItem("Exit", icon);
eMenuItem.setMnemonic(KeyEvent.VK_E);
eMenuItem.setToolTipText("Exit application");
eMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
}
});
file.add(eMenuItem);
menubar.add(file);
setJMenuBar(menubar);
setTitle("Simple menu");
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
public class App21_2
{
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Menu21_2 ex = new Menu21_2();
ex.setVisible(true);
}
});
}
}
显示一个菜单,其中一个项目。选择退出菜单项,关闭该应用程序。
JMenuBar menubar = new JMenuBar();
创建了一个菜单栏。
ImageIcon icon = new ImageIcon(getClass().getResource("exit.png"));
菜单中显示图标。
JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
setMnemonic()方法创建菜单的快捷键,可以利用Alt + F快捷键。
eMenuItem.setToolTipText("Exit application");
创建一个工具提示的菜单项。
图1:带图标的菜单
二、子菜单
每个菜单都还可以有一个子菜单。这样,我们可以组成命令行。例如,可以把隐藏/显示各种工具栏像个人,地址栏,状态栏或导航栏到一个名为工具栏子菜单中的命令。在菜单中,可以用一个简单的线作为
单独的分离器。通常将New命令,Open命令,Save命令,打印,打印预览命令相分离。菜单命令同时也可以通过键盘快捷键来启动,但是需要定义菜单项的加速键。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
class Menu21_3 extends JFrame {
public Menu21_3() {
initUI();
}
public final void initUI() {
JMenuBar menubar = new JMenuBar();
ImageIcon iconNew = new ImageIcon(getClass().getResource("new.png"));
ImageIcon iconOpen = new ImageIcon(getClass().getResource("open.png"));
ImageIcon iconSave = new ImageIcon(getClass().getResource("save.png"));
ImageIcon iconExit = new ImageIcon(getClass().getResource("exit.png"));
JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
JMenu imp = new JMenu("Import");
imp.setMnemonic(KeyEvent.VK_M);
JMenuItem newsf = new JMenuItem("Import ");
JMenuItem bookm = new JMenuItem("");
JMenuItem mail = new JMenuItem("");
imp.add(newsf);
《Java程序设计》第二十一
在这个例子中,我们创建了一个子菜单,菜单分离器和加速键。