《java图形用户界面设计(3)Swing常用组件.ppt》由会员分享,可在线阅读,更多相关《java图形用户界面设计(3)Swing常用组件.ppt(82页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年年7月月5日星期二日星期二NCEPUv 编写一个计算器编写一个计算器v 所需要的知识点所需要的知识点 常用组件和容器的使用方法及功能常用组件和容器的使用方法及功能 AWT事件处理模型事件处理模型例例2022年年7月月5日星期二日星期二Swing中的容器中的容器v 顶级容器:一般是一个顶层窗口(框架)顶级容器:一般是一个顶层窗口(框架) JFrame:用于框架窗口的类,应用程序至少使用一个框架窗口。用于框架窗口的类,应用程序至少使用一个框架窗口。 JDialog:用于对话框的类。用于对话框的类。 JApplet:用于使用用于使用Swing组件的组件的JavaApplet的类。的类。v
2、中间容器:需要包含在顶层容器中使用的容器。中间容器:需要包含在顶层容器中使用的容器。 JPanel:面板,是最灵活、最常用的中间容器。面板,是最灵活、最常用的中间容器。 JScrollPane:与与JPanel类似,但还可在大的组件或可扩展组件周围类似,但还可在大的组件或可扩展组件周围提供滚动条。提供滚动条。 JTabbedPane:包含多个组件,但一次只显示一个组件。用户可在包含多个组件,但一次只显示一个组件。用户可在组件之间方便地切换。组件之间方便地切换。 JToolBar:按行或列排列一组组件(通常是按钮)。按行或列排列一组组件(通常是按钮)。2022年年7月月5日星期二日星期二与与AW
3、T组件不同,组件不同,Swing组件不能直接添加到顶层容器中,组件不能直接添加到顶层容器中,它必须添加到一个与它必须添加到一个与Swing顶层容器相关联的内容面板顶层容器相关联的内容面板(contentpane)上。)上。JFrame的使用的使用2022年年7月月5日星期二日星期二JFrame的使用的使用向向JFrame中添加组件的两种方式之一:中添加组件的两种方式之一:用用getContentPane()方法获得方法获得JFrame的内容面板,再的内容面板,再对其加入组件:对其加入组件:frame.getContentPane().add(childComponent) 在J2SE5.0中,
4、我们可以直接添加部件到最高级的Swing容器,也可以直接在容器内设置布局管理和删除部件。 这个变化允许我们可以省去调用getContentPane()而直接在容器内应用add(),setLayout()和remove()。 然而,还是不能忽略ContentPane, 比方说setBackground,需要用fr.getContentPane().setBackground(Color.blue)2022年年7月月5日星期二日星期二NCEPUJFrame的使用的使用v 当你创建一个当你创建一个JFrame的时候的时候JFrame jf = new JFrame(); 在构造方法在构造方法JFra
5、me()内部会给内部会给jf默认添加一个默认添加一个rootPane。 jf.setBackground(Color.blue); jf.getContentPane().setBackground(Color.black); import javax.swing.*; import java.awt.*; public class FrameTest extends JFrame FrameTest() super(Test); setBackground(Color.BLACK); setLayout(new GridLayout(6,6,2,2); / 1.4中问题 1 for ( in
6、t i=0;i36; i+) JPanel jPanel = new JPanel(); jPanel.setBackground(new Color (int)(Math.random()*16777215); add(jPanel); / 1.4中问题 2 setSize(400,400); setVisible(true); public static void main(String args) new FrameTest(); getContentPane().setBackground(Color.BLACK); 2022年年7月月5日星期二日星期二JFrame的使用的使用向向JF
7、rame中添加组件的两种方式之二:中添加组件的两种方式之二:把组件添加到把组件添加到Jpanel之类的中间容器中,用之类的中间容器中,用setContentPane()方法把该容器置为方法把该容器置为JFrame的内的内容面板:容面板: Jpanel contentPane=new Jpanel( );/把其它组件添加到把其它组件添加到Jpanel中中;frame.setContentPane(contentPane); 2022年年7月月5日星期二日星期二Swing常用容器常用容器JPanel的使用的使用 JPanel面板是容器组件,没有标题,不能独立存在。面板是容器组件,没有标题,不能独立
8、存在。实例化以后必须使用实例化以后必须使用Container类的类的add方法装入到方法装入到Window对象或对象或Frame对象中。对象中。可用可用javax.swing.BorderFactory类中的方法获得类中的方法获得2022年年7月月5日星期二日星期二 import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; class GUIDemo1 public static void main(String args)throws
9、Exception JFrame f=new JFrame(第一个Java窗口); f.setSize(300,200); BufferedImage image=ImageIO.read(f.getClass().getResource(/MPj.jpg); f.setIconImage(image); /设置图标 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); /设置容器可见性 f.setResizable(false); f.setLocationRelativeTo(null) ; JPanel
10、 p=new JPanel(); p.setBackground(Color.BLUE); f.setLayout(null); p.setSize(100,100); f.getContentPane().add(p); 2022年年7月月5日星期二日星期二NCEPUSwing的常用组件的常用组件JLabelv JLabel( (标签标签) )是是用户只能查看不能修改的用户只能查看不能修改的文本文本/图像图像显示区域。显示区域。 2022年年7月月5日星期二日星期二NCEPUSwing的常用组件的常用组件-JTextFieldv JTextField(JTextField(单行文本域单行文本
11、域) )是是一个单行条形文本区,能够接收输一个单行条形文本区,能够接收输入、显示输出。入、显示输出。2022年年7月月5日星期二日星期二NCEPUv获得文本域的内容获得文本域的内容x=Integer.parseInt(text1.getText().trim();v重新设置文本域的内容重新设置文本域的内容resultText.setText(s); Swing的常用组件的常用组件-JTextFieldsetText(Strings)设置文本框中的文本设置文本框中的文本getText()获取文本框中的文本获取文本框中的文本setEditable(booleanb) 指定文本框的可编辑性。创建的指
12、定文本框的可编辑性。创建的文本框默认为可编辑的文本框默认为可编辑的2022年年7月月5日星期二日星期二NCEPU获取两个文本域的输入并求和,然后显示在第三个文本域中。获取两个文本域的输入并求和,然后显示在第三个文本域中。 Swing的常用组件的常用组件JTextFieldimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class TFMath public static void main(String args) new TFFrame().launchFrame();class TFFrame ex
13、tends JFrame JTextField num1, num2, num3;public void launchFrame() num1 = new JTextField(10);num2 = new JTextField(10);num3 = new JTextField(15);JLabel lblPlus = new JLabel(+);JButton btnEqual = new JButton(=);btnEqual.addActionListener(new MyMonitor();setLayout(new FlowLayout();add(num1);add(lblPlu
14、s);add(num2);add(btnEqual);add(num3);pack();setVisible(true);Swing常用的组件常用的组件文本域文本域private class MyMonitor implements ActionListener public void actionPerformed(ActionEvent e) int n1 = Integer.parseInt(num1.getText();int n2 = Integer.parseInt(num2.getText();num3.setText( + (n1+n2);2022年年7月月5日星期二日星期二N
15、CEPUSwing的常用组件的常用组件-JPasswordFieldv JPasswordField(JPasswordField(口令框口令框) )接受接受用户的输入,但不会真正显用户的输入,但不会真正显示出来,而是显示回显符。示出来,而是显示回显符。密码域密码域JPasswordFieldimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class TFPassword public static void main(String args) new TFFrame2();密码域密码域JPasswor
16、dFieldclass TFFrame2 extends JFrameTFFrame2()JPasswordField pf = new JPasswordField();add(pf);pf.addActionListener(new TFActionListener2();pack();setVisible(true);密码域密码域JPasswordFieldclass TFActionListener2 implements ActionListenerpublic void actionPerformed(ActionEvent e) JPasswordField pf = (JPas
17、swordField)e.getSource();System.out.println(pf.getText();tf.setText();2022年年7月月5日星期二日星期二NCEPU密码域密码域JPasswordField2022年年7月月5日星期二日星期二NCEPUSwing的常用组件的常用组件-JPasswordField实战:实现上面的图形用户界面。2022年年7月月5日星期二日星期二NCEPUSwing的常用组件的常用组件-JTextAreav JTextArea(JTextArea(多行文本框多行文本框) )可以输入或输出多行文本。可以输入或输出多行文本。 设定是否可编辑设定是否
18、可编辑setEditable(Boolean b)JTextArea(String text, int rows,int columns) 指定文本创建文本区,指定行数和列数2022年年7月月5日星期二日星期二NCEPU换行方式:换行方式:v手动换行手动换行v自动换行:通过设置换行属性来避免手动换行。自动换行:通过设置换行属性来避免手动换行。v增加滚动条:通过把文本区插入到一个滚动窗格中来实现。增加滚动条:通过把文本区插入到一个滚动窗格中来实现。这也是给其他组件添加滚动条的方法。这也是给其他组件添加滚动条的方法。textArea.setLineWrap(true);JScrollPane sc
19、rollPane = new JScrollPane(textArea);Swing的常用组件的常用组件-JTextArea2022年年7月月5日星期二日星期二NCEPU文本区的三文本区的三种显示方式种显示方式Swing的常用组件的常用组件-JTextArea2022年年7月月5日星期二日星期二NCEPU例:创建包含例:创建包含文本区、文本框文本区、文本框和和“提交提交”按钮按钮的窗口。的窗口。 在文本区中输入文字,单击在文本区中输入文字,单击“提交提交”按钮,文本按钮,文本 框中会出现同样的文字。框中会出现同样的文字。Swing的常用组件的常用组件-JTextAreaimport java.
20、awt.*; import javax.swing.*;class JTextAreaEx extends JFrame JTextArea ta; JTextField t; JButton b; JTextAreaEx() setSize(400,250); setLayout(new FlowLayout(); Container c=getContentPane(); setVisible(true); ta=new JTextArea(5,10); /创建文本区、文本框和按钮 ta.setLineWrap(true); /自动换行,只添加垂直滚动条 JScrollPane scrol
21、lPane = new JScrollPane(ta); /加滚动条 scrollPane.setBorder(BorderFactory.createLoweredBevelBorder();/设置边界 c.add(scrollPane); t=new JTextField(10); b=new JButton(提交); c.add(b); c.add(t); pack(); public static void main(String args) JTextAreaEx tae=new JTextAreaEx(); public void actionPerformed(ActionEve
22、nt e) t.setText(ta.getText(); 2022年年7月月5日星期二日星期二NCEPU其他其他Swing组件的使用组件的使用2022年年7月月5日星期二日星期二NCEPUSwing的常用组件的常用组件复选框复选框JCheckBoxv JCheckBox(JCheckBox(复选框复选框) )有选中和未选中两种状态,允许用户从有选中和未选中两种状态,允许用户从一组选项中进行多个选择。一组选项中进行多个选择。 设置复选框的文本设置复选框的文本 setText 获取复选框的文本获取复选框的文本 getText2022年年7月月5日星期二日星期二NCEPU常用的构造方法有:常用的构
23、造方法有:JCheckBox()JCheckBox(Icon icon)JCheckBox(Icon icon, boolean selected)JCheckBox(String text)JCheckBox(String text, boolean selected)JCheckBox(String text, Icon icon)JCheckBox(String text, Icon icon, boolean selected)Swing的常用组件的常用组件复选框复选框JCheckBox2022年年7月月5日星期二日星期二NCEPUJCheckBox的相关事件类的相关事件类v 事件响应
24、事件响应 用户点击复选框使其选中状态发生变化时会引发用户点击复选框使其选中状态发生变化时会引发ItemEvent事件。事件。 实现实现ItemListener接口的接口的itemStateChanged()方法。方法。 publicvoidaddItemListener(ItemListenerl)设置复选框的事件监听器。设置复选框的事件监听器。查阅JDK文档,学习ItemEvent类的常用方法。2022年年7月月5日星期二日星期二NCEPU例题:创建如下窗口,包含三个复选框和一个面板,选中例题:创建如下窗口,包含三个复选框和一个面板,选中某一复选框后,面板的背景色就变成相应的颜色。某一复选框
25、后,面板的背景色就变成相应的颜色。Swing的常用组件的常用组件复选框复选框JCheckBoximport java.awt.*;import java.awt.event.*;public class CheckBoxExp implements ItemListener Frame f; Panel p1, p2;Checkbox ck1,ck2,ck3;public void display() f = new Frame (复选框练习); ck1=new Checkbox(红色); ck2=new Checkbox(黄色); ck3=new Checkbox(蓝色); p1=new P
26、anel(); p2=new Panel(); f.add(p1,North); f.add(p2); p1.add(ck1); p1.add(ck2); p1.add(ck3); f.setSize(400, 200); f.setVisible (true); ck1.addItemListener(this); ck2.addItemListener(this); ck3.addItemListener(this); public void itemStateChanged(ItemEvent e) if(e.getSource()=ck1) p2.setBackground(Color
27、.red); else if(e.getSource()=ck2) p2.setBackground(Color.yellow); else p2.setBackground(Color.blue); public static void main(String args) new CheckBoxExp().display(); 2022年年7月月5日星期二日星期二NCEPUSwing常用的组件常用的组件单选框单选框JRadioButtonv JRadioButton(单选按钮单选按钮)通常是成组使用的,可以通过通常是成组使用的,可以通过ButtonGroup类进行管理。类进行管理。v 常用
28、的构造方法有:常用的构造方法有:JRadioButton()JRadioButton(Icon icon)JRadioButton(Icon, boolean selected)JRadioButton(String text)JRadioButton(String text, boolean selected)JRadioButton(String text, Icon icon)JRadioButton(String text, Icon icon, boolean selected)2022年年7月月5日星期二日星期二NCEPU单选框单选框(JRadioButton)示例示例要保证三个要
29、保证三个JRadioButton的互斥性的互斥性应该把这三个控件放到应该把这三个控件放到同一个同一个ButtonGroup中中2022年年7月月5日星期二日星期二NCEPUSwing的常用组件的常用组件组合框组合框JComboBoxv JComboBox(组合框组合框)是一种是一种“多选一多选一”的组件,可编辑每的组件,可编辑每项的内容,而且每项的内容可以是任意类。项的内容,而且每项的内容可以是任意类。v 当用户选取组合框中的某一选择项时,可激发当用户选取组合框中的某一选择项时,可激发ItemEvent事件。事件。2022年年7月月5日星期二日星期二NCEPU常用的构造方法有:常用的构造方法有
30、: 构造函数使用缺省数据模型创建构造函数使用缺省数据模型创建JComboBox public JComboBox() 包含指定数组元素的组合框包含指定数组元素的组合框 public JComboBox(Object items)Swing的常用组件的常用组件组合框组合框JComboBox2022年年7月月5日星期二日星期二NCEPU 创建组合框创建组合框 向组合框对象里加入条目向组合框对象里加入条目 JComboBox jobsBox = new JComboBox(); jobsBox.addItem(job1); jobsBox.addItem(job2); 使用使用String数组创建数
31、组创建 String comboItem=“job1”,”job2”; JComboBox jobsBox=new JComboBox(comboItem); 对组合框是否能够被编辑也可以进行设置。对组合框是否能够被编辑也可以进行设置。jobsBox.setEditable(true); Swing的常用组件的常用组件组合框组合框JComboBox2022年年7月月5日星期二日星期二NCEPU组合框的内容可以动态变化组合框的内容可以动态变化uaddItem方法方法:把条目添加到列表的末尾;:把条目添加到列表的末尾;uinsertItermAt方法方法:将新条目添加到列表的任何位置;:将新条目添
32、加到列表的任何位置;uremoveItem方法和方法和removeItemAt方法方法:删除指定条目;:删除指定条目;uremoveAllItems方法:方法:删除所有条目。删除所有条目。Swing的常用组件的常用组件组合框组合框JComboBoxjobsBox.insertItermAt(“job7”, 6); /在第7个位置增加“job7”条目。jobsBox.removeItem(“job7”); /删除“job7”条目。jobsBox.removeItemAt(5); /删除第6个条目,即“job6”。jobsBox.removeAllItems(); /删除所有条目。2022年年7月
33、月5日星期二日星期二NCEPU 当选择组合框的条目时,会产生单击事件(当选择组合框的条目时,会产生单击事件(ActionEvent)和项事件(和项事件(ItemEvent)。组合框事件处理组合框事件处理方法方法说明说明public Object getSelectedItem() 返回当前选中项。注意类型。返回当前选中项。注意类型。public int getSelectedIndex() 返回选中项的位置。列表中第一项的位置是返回选中项的位置。列表中第一项的位置是0。2022年年7月月5日星期二日星期二NCEPU组合框组合框(JComboBox)常用的事件处常用的事件处理方式理方式2022年
34、年7月月5日星期二日星期二NCEPUSwing的常用组件的常用组件列表框列表框(JList)v JList(列表框列表框)向用户显示一组选项向用户显示一组选项v 构造方法构造方法 public JList()构造空列表构造空列表 public JList ( Object listData) 以数组中的元素构造一个以数组中的元素构造一个JList。String fontSize=“小四”,“四号”,“小五”,“五号”; JList list=new JList(fontSize); public JList ( Vector listData)以以Vector 中的元素构造一个中的元素构造一个
35、 JList。2022年年7月月5日星期二日星期二NCEPU建立列表框建立列表框前,需要指定所显示的列表条目:前,需要指定所显示的列表条目:String courses = “Math”, “English”, “Physics”, “Chemic”, “Biology”, “Politics”;JList courseList = new JList(courses);如果列表框比较长,而显示屏幕比较小,可以设置列表中显如果列表框比较长,而显示屏幕比较小,可以设置列表中显示的行数,同时使用示的行数,同时使用滚动条滚动条:courseList.setVisibleRowCount(4);JSc
36、rollPane listScrollPane = new JScrollPane(courseList);Swing的常用组件的常用组件列表框列表框(JList)2022年年7月月5日星期二日星期二NCEPUq选择列表框中的多个条目有两种方式:连续条目选择和间断条目选择。选择列表框中的多个条目有两种方式:连续条目选择和间断条目选择。q用户选择列表框条目时,列表框就会产生选择事件。将列表选择监听器用户选择列表框条目时,列表框就会产生选择事件。将列表选择监听器ListSelectionListener添加给列表组件,并在该监听器中实现添加给列表组件,并在该监听器中实现valueChanged方法
37、:方法:courseList.addListSelectionListener(new courseListener();.class courseListener implements ListSelectionListenerpublic void valueChanged(ListSelectionEvent event).p获得用户所选择的列表框条目以及条目所在的索引号需要使用获得用户所选择的列表框条目以及条目所在的索引号需要使用getSelectedValues方法和方法和getSelectedIndices方法:方法:Object selectedCourses = courseL
38、ist.getSelectedValues();intselectedIndexCourses=courseList.getSelectedIndices();Swing的常用组件的常用组件列表框列表框(JList)2022年年7月月5日星期二日星期二NCEPUv JList(列表框列表框)可以选择一项或多项可以选择一项或多项。列表框查阅JDK文档,学习JList类的常用方法及相关事件。Swing的常用组件的常用组件列表框列表框(JList)2022年年7月月5日星期二日星期二NCEPU练习练习2022年年7月月5日星期二日星期二NCEPU例:创建一个包含列表框和文本框的窗口,要求单击或双例:
39、创建一个包含列表框和文本框的窗口,要求单击或双击击列表框中某一选项后,文本框中显示该选项。列表框中某一选项后,文本框中显示该选项。Swing的常用组件的常用组件列表框列表框(JList)import java.awt.*; import java.awt.event.*;public class List1 implements ActionListener ,ItemListener Frame f; TextField tf1; List ls1; public void display() f = new Frame(列表框练习); f.setSize(300,200); f.setLo
40、cation(300,300); f.setBackground(Color.lightGray); f.setLayout(new FlowLayout(); tf1 = new TextField (10); f.add(tf1); ls1 = new List(); f.add(ls1); ls1.add(北京);ls1.add(上海); ls1.add(南京);ls1.add(西安); f.setVisible(true); ls1.addActionListener(this); ls1.addItemListener(this); public void actionPerform
41、ed(ActionEvent e) tf1.setText(ls1.getSelectedItem(); public void itemStateChanged(ItemEvent e) tf1.setText(ls1.getSelectedItem(); public static void main(String arg) (new List1().display(); 2022年年7月月5日星期二日星期二NCEPUSwing的常用组件的常用组件菜单菜单JMenuItem类型有三种:类型有三种:JMenuItem JCheckBoxMenuItem JRadioButtonMenuIte
42、mJMenuBarJMenuJMenuItem2022年年7月月5日星期二日星期二NCEPU 菜单的分类菜单的分类菜单条式菜单(下拉菜单)菜单条式菜单(下拉菜单)弹出式菜单弹出式菜单 菜单组件与其他组件不同,不能放入普通的容器,也无菜单组件与其他组件不同,不能放入普通的容器,也无法用布局管理器对其加以控制,只能被放入菜单容器中。法用布局管理器对其加以控制,只能被放入菜单容器中。Swing的常用组件的常用组件菜单菜单2022年年7月月5日星期二日星期二NCEPU下拉式菜单下拉式菜单v 下拉式菜单主要由三部分组成下拉式菜单主要由三部分组成 菜单条菜单条(JMenuBar) 菜单菜单(JMenu)
43、菜单项菜单项(JMenuItem)。菜单栏菜单栏菜单条菜单条菜菜单单菜单项菜单项2022年年7月月5日星期二日星期二NCEPUq 创建菜单栏创建菜单栏 JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar);q 创建菜单创建菜单JMenu fileMenu = new JMenu(File);q 创建子菜单。创建子菜单。JMenu optionMenu = new JMenu(Option);q 创建菜单项创建菜单项 JMenuItem newfile=new JMenuItem(新建);创建下拉式菜单创建下拉式菜单 将菜单项加入到子菜单
44、或菜单中。将菜单项加入到子菜单或菜单中。 将子菜单加入到菜单中。将子菜单加入到菜单中。 将菜单加入到菜单栏中。将菜单加入到菜单栏中。创建菜单的步骤创建菜单的步骤 import javax.swing.*; import java.awt.event.*;public class MenuDemo extends JFrame implements ActionListenerJTextArea tf=new JTextArea();JMenuBar mbar=new JMenuBar(); JMenu menu=new JMenu(文件); JMenuItem newfile=new JMen
45、uItem(新建); JMenuItem open=new JMenuItem(打开);JMenuItem close=new JMenuItem(关闭);JMenuItem quit=new JMenuItem(退出); 创建菜单的步骤创建菜单的步骤public MenuDemo()super(Menu实例); newfile.addActionListener(this);open.addActionListener(this);close.addActionListener(this);quit.addActionListener(this); menu.add(newfile); me
46、nu.add(open); menu.add(close); menu.addSeparator(); menu.add(quit); mbar.add(menu); setJMenuBar(mbar); add(tf);addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );public void actionPerformed(ActionEvent e)if(e.getSource()=newfile) tf.setText(新建文件);if(e.ge
47、tSource()=open) tf.setText(打开文件);if(e.getSource()=close) tf.setText(关闭文件);if(e.getSource()=quit) System.exit(0); public static void main(String args) JFrame f=new MenuDemo(); f.setSize(200,200); f.setVisible(true); 2022年年7月月5日星期二日星期二NCEPU同创建一般的菜单项几乎一样,只需注意复选框和单选按钮的不同构造方同创建一般的菜单项几乎一样,只需注意复选框和单选按钮的不同构
48、造方法以及单选按钮组的构建:法以及单选按钮组的构建:创建单选按钮菜单项创建单选按钮菜单项“Forward”,并将,并将“Forward”菜单项加入到菜单项加入到“Search”菜单中。菜单中。ButtonGroup group = new ButtonGroup();forwardItem = new JRadioButtonMenuItem(Forward);group.add(forwardItem);searchMenu.add(forwardItem);创建复选框菜单项创建复选框菜单项“ToolBar”,并加入到子菜单中。,并加入到子菜单中。JCheckBoxMenuItem tool
49、Item = new JCheckBoxMenuItem(ToolBar);optionMenu.add(toolItem);创建复选框和单选按钮菜单项创建复选框和单选按钮菜单项 2022年年7月月5日星期二日星期二NCEPUv菜单项的使用状态菜单项的使用状态菜单项能够被选取取决于菜单项的启用和禁用状态:菜单项能够被选取取决于菜单项的启用和禁用状态:/初始设置初始设置“Save”菜单项为禁用状态。菜单项为禁用状态。saveItem.setEnabled(false);v快捷键和加速器快捷键和加速器快捷键快捷键显示为带有下划线的字母,显示为带有下划线的字母,加速器加速器则显示为菜单项旁边的组合键
50、。:则显示为菜单项旁边的组合键。:/设置菜单的快捷键。设置菜单的快捷键。fileMenu.setMnemonic(F);/设置设置“Exit”菜单项的菜单项的快捷键快捷键为为“T”。JMenuItem exitItem = new JMenuItem(Exit, T);/设置设置“Exit”菜单项的菜单项的加速器加速器为为“CtrlT”。exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK);Swing的常用组件的常用组件菜单菜单2022年年7月月5日星期二日星期二NCEPUv弹出式