博学谷——让IT教学更简单,让IT学习更有效
}
}
public static void main(String[] args) { new Example18 (); }
}
} else { }
field.setText(\您选择的城市是:\
});
field = new JTextField(20);
panel.add(comboBox); // 在面板中添加组合框 panel.add(field); // 在面板中添加文本框 // 在内容面板中添加JPanel面板
this.add(panel, BorderLayout.NORTH); this.setSize(350, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);
运行程序会弹出窗体,在窗体中有可选择的下拉列表框,选择前后的效果如图9-22所示。
图9-22 运行结果
三、案例总结
1、JComboBox组件被称为组合框,它将所有选项折叠收藏在一起,默认显示的是第一个添加的选项。 2、JComboBox组合框组件分为可编辑和不可编辑两种形式,对于不可编辑的组合框,用户只能在现有的选项列表中进行选择,而对于可编辑的组合框,用户既可以在现有的选项中选择,也可以自己输入新的内容。需要注意的是,自己输入的内容只能作为当前项显示,并不会添加到组合框的选项列表中。
案例9-19 如何创建下拉式菜单 一、案例描述
1、 考核知识点
编号:00109023 名称:下拉式菜单
2、 练习目标
? 掌握如何创建下拉式菜单
36
博学谷——让IT教学更简单,让IT学习更有效
3、 需求分析
下拉式菜单,大家肯定很熟悉,因为计算机中很多文件的菜单都是下拉式的,创建下拉式菜单需要使用三个组件:JMenuBar(菜单栏)、JMenu(菜单)和JMenuItem(菜单项),为了让初学者熟悉下拉菜单,本案例演示如何创建下拉菜单。
4、 设计思路(实现原理)
1) 定义类Example19继承自JFrame,用于创建一个下拉式菜单。 2) 创建JMenuBar菜单栏对象,将其放置在JFrame窗口的顶部 3) 创建JMenu菜单对象,将其添加到JMenuBar菜单栏中 4) 创建JMenuItem菜单项,为菜单项添加事件监听器,当点击菜单项会弹出一个模态的JDialog窗口,
将菜单项添加到JMenu菜单中。 5) 为菜单对象添加一个分隔符。
二、案例实现
定义Example19类,代码如下所示:
import java.awt.event.*; import javax.swing.*;
public class Example19 extends JFrame { public Example19() {
JMenuBar menuBar = new JMenuBar(); // 创建菜单栏
this.setJMenuBar(menuBar); // 将菜单栏添加到JFrame窗口中 JMenu menu = new JMenu(\文件\创建文件菜单 JMenu menu1 = new JMenu(\编辑\创建编辑菜单 JMenu menu2 = new JMenu(\格式\创建格式菜单 JMenu menu3 = new JMenu(\查看\创建查看菜单 menuBar.add(menu); // 将菜单添加到菜单栏上 menuBar.add(menu1); // 将菜单添加到菜单栏上 menuBar.add(menu2); // 将菜单添加到菜单栏上 menuBar.add(menu3); // 将菜单添加到菜单栏上 // 创建两个菜单项
JMenuItem item1 = new JMenuItem(\弹出窗口\JMenuItem item2 = new JMenuItem(\关闭\// 为菜单项添加事件监听器
item1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
// 创建一个JDialog窗口
JDialog dialog = new JDialog(Example023.this, true); dialog.setTitle(\弹出窗口\dialog.setSize(200, 200); dialog.setLocation(50, 50); dialog.setVisible(true);
});
37
博学谷——让IT教学更简单,让IT学习更有效
}
}
public static void main(String[] args) { }
new Example19 ();
item2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
System.exit(0);
});
menu.add(item1); // 将菜单项添加到菜单中 menu.addSeparator(); // 添加一个分隔符 menu.add(item2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(300, 300); this.setVisible(true);
运行程序,生成的窗体如图9-23所示。
图9-23 生成的窗体
三、案例总结
1、在GUI程序中,菜单是很常见的组件,利用Swing提供的菜单组件可以创建出多种样式的菜单,创建下拉式菜单需要使用三个组件:
(1)JMenuBar(菜单栏): JMenuBar表示一个水平的菜单栏,它用来管理菜单,不参与同用户的交互式操作。菜单栏可以放在容器的任何位置,但通常情况下会使用顶级窗口(如JFrame、JDialog)的setJMenuBar(JMenuBar menuBar)方法将它放置在顶级窗口的顶部。
(2)JMenu(菜单):JMenu表示一个菜单,它用来整合管理菜单项。菜单可以是单一层次的结构,也可以是多层次的结构。大多情况下,使用JMenu(String text)构造函数创建JMenu菜单,参数text表示菜单上的文本。
(3)JMenuItem(菜单项):JMenuItem表示一个菜单项,它是菜单系统中最基本的组件。和JMenu菜单一样,在创建JMenuItem菜单项时,通常会使用JMenumItem(String text)这个构造方法为菜单项指定文本内容。
38
博学谷——让IT教学更简单,让IT学习更有效
2、JMenuItem继承自AbstractButton类的,因此可以把它看成是一个按钮,如果使用无参的构造方法创建了一个菜单项,则可以调用从AbstractButton类中继承的setText(String text)方法和setIcon()方法为其设置文本和图标。
案例9-20 如何创建弹出式菜单 一、案例描述
1、 考核知识点
编号:00109024 名称:弹出式菜单
2、 练习目标
? 掌握如何创建弹出式菜单
3、 需求分析
弹出式菜单,相信大家也不会陌生,当我们在Windows桌面点击鼠标右键时出现的菜单就是弹出式菜单。在Java的Swing组件中,弹出式菜单用JPopupMenu表示,为了让初学者熟悉弹出式菜单,本案例演示如何创建弹出式菜单。
4、 设计思路(实现原理)
1) 定义类Example20继承自JFrame,用于创建一个弹出式菜单。 2) 创建JPopupMenu菜单对象,将其放置在JFrame窗口的顶部。 3) 创建三个菜单项:refreshItem、createItem、exitItem。
4) 为exitItem菜单项添加事件监听器,当点击它时会退出程序。
5)为JFrame窗口添加clicked鼠标事件,监听器如果点击的是鼠标的右键,显示JPopupMenu菜单。
二、案例实现
定义Example20类,代码如下所示:
import java.awt.event.*; import javax.swing.*;
public class Example20 extends JFrame {
private JPopupMenu popupMenu; public Example20() { // 创建一个JPopupMenu菜单
popupMenu = new JPopupMenu(); // 创建三个JMenuItem菜单项
JMenuItem refreshItem = new JMenuItem(\查看\JMenuItem createItem = new JMenuItem(\新建\JMenuItem exitItem = new JMenuItem(\退出\// 为exitItem菜单项添加事件监听器
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
39
博学谷——让IT教学更简单,让IT学习更有效
}
}
public static void main(String[] args) { }
new Example20 ();
}
});
// 往JPopupMenu菜单添加菜单项 popupMenu.add(refreshItem); popupMenu.add(createItem); popupMenu.addSeparator(); popupMenu.add(exitItem);
// 为JFrame窗口添加clicked鼠标事件监听器 this.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) { }
// 如果点击的是鼠标的右键,显示JPopupMenu菜单 if (e.getButton() == e.BUTTON3) { }
popupMenu.show(e.getComponent(), e.getX(), e.getY());
});
this.setSize(300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);
运行程序,生成的窗体如图9-24所示。
图9-24 生成的窗体
三、案例总结
1、定义了一个类Example20继承自JFrame。
2、创建了一个JPopupMenu菜单,其增加了refreshItem、createItem和exitItem三个JMenuItem菜单项,菜单项在默认情况下是不可见的,所以要通过调用show(Component invoker,int x,int y)方法将菜单项显示出来,参数invoker表示JPopupMenu菜单显示位置的参考组件,x和y表示invoker组件坐标空间中的
40
博学谷——让IT教学更简单,让IT学习更有效
一个坐标,显示的是JPopupMenu菜单的左上角坐标。为exitItem菜单项添加了一个ActionListener事件监听器,当点击它时,会退出程序。代码的第24到31行代码为当前窗口添加了一个鼠标事件监听器,监听鼠标的mouseClicked事件,当鼠标按下时,调用MouseEvent的getButton()判断是否按下了鼠标的右键(BUTTON3),如果是就调用JPopupMenu的show()方法将其显示,并将鼠标点击的坐标作为弹出菜单的左上角坐标。
41