




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、NCEPUSwing常用组件常用组件2022年年6月月12日星期日日星期日NCEPUv 编写一个计算器编写一个计算器v 所需要的知识点所需要的知识点 常用组件和容器的使用方法及功能常用组件和容器的使用方法及功能 AWT事件处理模型事件处理模型例例2022年年6月月12日星期日日星期日Swing中的容器中的容器v 顶级容器:一般是一个顶层窗口(框架)顶级容器:一般是一个顶层窗口(框架) JFrame:用于框架窗口的类,应用程序至少使用一个框架窗口。用于框架窗口的类,应用程序至少使用一个框架窗口。 JDialog:用于对话框的类。用于对话框的类。 JApplet:用于使用用于使用Swing组件的组
2、件的JavaApplet的类。的类。v 中间容器:需要包含在顶层容器中使用的容器。中间容器:需要包含在顶层容器中使用的容器。 JPanel:面板,是最灵活、最常用的中间容器。面板,是最灵活、最常用的中间容器。 JScrollPane:与与JPanel类似,但还可在大的组件或可扩展组件周围类似,但还可在大的组件或可扩展组件周围提供滚动条。提供滚动条。 JTabbedPane:包含多个组件,但一次只显示一个组件。用户可在包含多个组件,但一次只显示一个组件。用户可在组件之间方便地切换。组件之间方便地切换。 JToolBar:按行或列排列一组组件(通常是按钮)。按行或列排列一组组件(通常是按钮)。20
3、22年年6月月12日星期日日星期日与与AWT组件不同,组件不同,Swing组件不能直接添加到顶层容器中,组件不能直接添加到顶层容器中,它必须添加到一个与它必须添加到一个与Swing顶层容器相关联的内容面板顶层容器相关联的内容面板(contentpane)上。)上。JFrame的使用的使用2022年年6月月12日星期日日星期日JFrame的使用的使用向向JFrame中添加组件的两种方式之一:中添加组件的两种方式之一:用用getContentPane()方法获得方法获得JFrame的内容面板,再的内容面板,再对其加入组件:对其加入组件:frame.getContentPane().add(chil
4、dComponent) 在J2SE5.0中,我们可以直接添加部件到最高级的Swing容器,也可以直接在容器内设置布局管理和删除部件。 这个变化允许我们可以省去调用getContentPane()而直接在容器内应用add(),setLayout()和remove()。 然而,还是不能忽略ContentPane, 比方说setBackground,需要用fr.getContentPane().setBackground(Color.blue)2022年年6月月12日星期日日星期日JFrame的使用的使用v 当你创建一个当你创建一个JFrame的时候的时候JFrame jf = new JFrame
5、(); 在构造方法在构造方法JFrame()内部会给内部会给jf默认添加一个默认添加一个rootPane。 jf.setBackground(Color.blue); jf.getContentPane().setBackground(Color.black); NCEPU import javax.swing.*; import java.awt.*; public class FrameTest extends JFrame FrameTest() super(Test); setBackground(Color.BLACK); setLayout(new GridLayout(6,6,2
6、,2); / 1.4中问题 1 for ( int 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年年6月月1
7、2日星期日日星期日JFrame的使用的使用向向JFrame中添加组件的两种方式之二:中添加组件的两种方式之二:把组件添加到把组件添加到Jpanel之类的中间容器中,用之类的中间容器中,用setContentPane()方法把该容器置为方法把该容器置为JFrame的内的内容面板:容面板: Jpanel contentPane=new Jpanel( );/把其它组件添加到把其它组件添加到Jpanel中中;frame.setContentPane(contentPane); 2022年年6月月12日星期日日星期日Swing常用容器常用容器JPanel的使用的使用 JPanel面板是容器组件,没有标
8、题,不能独立存在。面板是容器组件,没有标题,不能独立存在。实例化以后必须使用实例化以后必须使用Container类的类的add方法装入到方法装入到Window对象或对象或Frame对象中。对象中。可用可用javax.swing.BorderFactory类中的方法获得类中的方法获得2022年年6月月12日星期日日星期日 import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; class GUIDemo1 public static vo
9、id main(String args)throws 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.setLocati
10、onRelativeTo(null) ; JPanel p=new JPanel(); p.setBackground(Color.BLUE); f.setLayout(null); p.setSize(100,100); f.getContentPane().add(p); 2022年年6月月12日星期日日星期日NCEPUSwing的常用组件的常用组件JLabelv JLabel( (标签标签) )是是用户只能查看不能修改的用户只能查看不能修改的文本文本/图像图像显示区域。显示区域。 2022年年6月月12日星期日日星期日NCEPUSwing的常用组件的常用组件-JTextFieldv JT
11、extField(JTextField(单行文本域单行文本域) )是是一个单行条形文本区,能够接收输一个单行条形文本区,能够接收输入、显示输出。入、显示输出。2022年年6月月12日星期日日星期日NCEPUv获得文本域的内容获得文本域的内容x=Integer.parseInt(text1.getText().trim();v重新设置文本域的内容重新设置文本域的内容resultText.setText(s); Swing的常用组件的常用组件-JTextFieldsetText(Strings)设置文本框中的文本设置文本框中的文本getText()获取文本框中的文本获取文本框中的文本setEdit
12、able(booleanb) 指定文本框的可编辑性。创建的指定文本框的可编辑性。创建的文本框默认为可编辑的文本框默认为可编辑的2022年年6月月12日星期日日星期日NCEPU获取两个文本域的输入并求和,然后显示在第三个文本域中。获取两个文本域的输入并求和,然后显示在第三个文本域中。 Swing的常用组件的常用组件JTextFieldimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class TFMath public static void main(String args) new TFFrame()
13、.launchFrame();class TFFrame extends 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 Fl
14、owLayout();add(num1);add(lblPlus);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
15、( + (n1+n2);2022年年6月月12日星期日日星期日NCEPUSwing的常用组件的常用组件-JPasswordFieldv JPasswordField(JPasswordField(口令框口令框) )接受接受用户的输入,但不会真正显用户的输入,但不会真正显示出来,而是显示回显符。示出来,而是显示回显符。密码域密码域JPasswordFieldimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class TFPassword public static void main(String arg
16、s) new TFFrame2();密码域密码域JPasswordFieldclass TFFrame2 extends JFrameTFFrame2()JPasswordField pf = new JPasswordField();add(pf);pf.addActionListener(new TFActionListener2();pack();setVisible(true);密码域密码域JPasswordFieldclass TFActionListener2 implements ActionListenerpublic void actionPerformed(ActionEv
17、ent e) JPasswordField pf = (JPasswordField)e.getSource();System.out.println(pf.getText();tf.setText();2022年年6月月12日星期日日星期日NCEPU密码域密码域JPasswordField2022年年6月月12日星期日日星期日NCEPUSwing的常用组件的常用组件-JPasswordField实战:实现上面的图形用户界面。2022年年6月月12日星期日日星期日NCEPUSwing的常用组件的常用组件-JTextAreav JTextArea(JTextArea(多行文本框多行文本框) )可
18、以输入或输出多行文本。可以输入或输出多行文本。 设定是否可编辑设定是否可编辑setEditable(Boolean b)JTextArea(String text, int rows,int columns) 指定文本创建文本区,指定行数和列数2022年年6月月12日星期日日星期日NCEPU换行方式:换行方式:v手动换行手动换行v自动换行:通过设置换行属性来避免手动换行。自动换行:通过设置换行属性来避免手动换行。v增加滚动条:通过把文本区插入到一个滚动窗格中来实现。增加滚动条:通过把文本区插入到一个滚动窗格中来实现。这也是给其他组件添加滚动条的方法。这也是给其他组件添加滚动条的方法。textA
19、rea.setLineWrap(true);JScrollPane scrollPane = new JScrollPane(textArea);Swing的常用组件的常用组件-JTextArea2022年年6月月12日星期日日星期日NCEPU文本区的三文本区的三种显示方式种显示方式Swing的常用组件的常用组件-JTextArea2022年年6月月12日星期日日星期日NCEPU例:创建包含例:创建包含文本区、文本框文本区、文本框和和“提交提交”按钮按钮的窗口。的窗口。 在文本区中输入文字,单击在文本区中输入文字,单击“提交提交”按钮,文本按钮,文本 框中会出现同样的文字。框中会出现同样的文字
20、。Swing的常用组件的常用组件-JTextAreaimport java.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(t
21、rue); /自动换行,只添加垂直滚动条 JScrollPane scrollPane = 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();
22、 public void actionPerformed(ActionEvent e) t.setText(ta.getText(); 2022年年6月月12日星期日日星期日NCEPU其他其他Swing组件的使用组件的使用2022年年6月月12日星期日日星期日NCEPUSwing的常用组件的常用组件复选框复选框JCheckBoxv JCheckBox(JCheckBox(复选框复选框) )有选中和未选中两种状态,允许用户从有选中和未选中两种状态,允许用户从一组选项中进行多个选择。一组选项中进行多个选择。 设置复选框的文本设置复选框的文本 setText 获取复选框的文本获取复选框的文本 get
23、Text2022年年6月月12日星期日日星期日NCEPU常用的构造方法有:常用的构造方法有: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年年6月月
24、12日星期日日星期日NCEPUJCheckBox的相关事件类的相关事件类v 事件响应事件响应 用户点击复选框使其选中状态发生变化时会引发用户点击复选框使其选中状态发生变化时会引发ItemEvent事件。事件。 实现实现ItemListener接口的接口的itemStateChanged()方法。方法。 publicvoidaddItemListener(ItemListenerl)设置复选框的事件监听器。设置复选框的事件监听器。查阅JDK文档,学习ItemEvent类的常用方法。2022年年6月月12日星期日日星期日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 C
26、heckbox(黄色); ck3=new Checkbox(蓝色); p1=new Panel(); 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) i
27、f(e.getSource()=ck1) p2.setBackground(Color.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年年6月月12日星期日日星期日NCEPUSwing常用的组件常用的组件单选框单选框JRadioButtonv JRadioButton(单选按钮单选按钮)通常是成组使用的,
28、可以通过通常是成组使用的,可以通过ButtonGroup类进行管理。类进行管理。v 常用的构造方法有:常用的构造方法有: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年年6月月
29、12日星期日日星期日NCEPU单选框单选框(JRadioButton)示例示例要保证三个要保证三个JRadioButton的互斥性的互斥性应该把这三个控件放到应该把这三个控件放到同一个同一个ButtonGroup中中2022年年6月月12日星期日日星期日NCEPUSwing的常用组件的常用组件组合框组合框JComboBoxv JComboBox(组合框组合框)是一种是一种“多选一多选一”的组件,可编辑每的组件,可编辑每项的内容,而且每项的内容可以是任意类。项的内容,而且每项的内容可以是任意类。v 当用户选取组合框中的某一选择项时,可激发当用户选取组合框中的某一选择项时,可激发ItemEvent
30、事件。事件。2022年年6月月12日星期日日星期日NCEPU常用的构造方法有:常用的构造方法有: 构造函数使用缺省数据模型创建构造函数使用缺省数据模型创建JComboBox public JComboBox() 包含指定数组元素的组合框包含指定数组元素的组合框 public JComboBox(Object items)Swing的常用组件的常用组件组合框组合框JComboBox2022年年6月月12日星期日日星期日NCEPU 创建组合框创建组合框 向组合框对象里加入条目向组合框对象里加入条目 JComboBox jobsBox = new JComboBox(); jobsBox.addIt
31、em(job1); jobsBox.addItem(job2); 使用使用String数组创建数组创建 String comboItem=“job1”,”job2”; JComboBox jobsBox=new JComboBox(comboItem); 对组合框是否能够被编辑也可以进行设置。对组合框是否能够被编辑也可以进行设置。jobsBox.setEditable(true); Swing的常用组件的常用组件组合框组合框JComboBox2022年年6月月12日星期日日星期日NCEPU组合框的内容可以动态变化组合框的内容可以动态变化uaddItem方法方法:把条目添加到列表的末尾;:把条目
32、添加到列表的末尾;uinsertItermAt方法方法:将新条目添加到列表的任何位置;:将新条目添加到列表的任何位置;uremoveItem方法和方法和removeItemAt方法方法:删除指定条目;:删除指定条目;uremoveAllItems方法:方法:删除所有条目。删除所有条目。Swing的常用组件的常用组件组合框组合框JComboBoxjobsBox.insertItermAt(“job7”, 6); /在第7个位置增加“job7”条目。jobsBox.removeItem(“job7”); /删除“job7”条目。jobsBox.removeItemAt(5); /删除第6个条目,即
33、“job6”。jobsBox.removeAllItems(); /删除所有条目。2022年年6月月12日星期日日星期日NCEPU 当选择组合框的条目时,会产生单击事件(当选择组合框的条目时,会产生单击事件(ActionEvent)和项事件(和项事件(ItemEvent)。组合框事件处理组合框事件处理方法方法说明说明public Object getSelectedItem() 返回当前选中项。注意类型。返回当前选中项。注意类型。public int getSelectedIndex() 返回选中项的位置。列表中第一项的位置是返回选中项的位置。列表中第一项的位置是0。2022年年6月月12日星
34、期日日星期日NCEPU组合框组合框(JComboBox)常用的事件处常用的事件处理方式理方式2022年年6月月12日星期日日星期日NCEPUSwing的常用组件的常用组件列表框列表框(JList)v JList(列表框列表框)向用户显示一组选项向用户显示一组选项v 构造方法构造方法 public JList()构造空列表构造空列表 public JList ( Object listData) 以数组中的元素构造一个以数组中的元素构造一个JList。String fontSize=“小四”,“四号”,“小五”,“五号”; JList list=new JList(fontSize); publ
35、ic JList ( Vector listData)以以Vector 中的元素构造一个中的元素构造一个 JList。2022年年6月月12日星期日日星期日NCEPU建立列表框建立列表框前,需要指定所显示的列表条目:前,需要指定所显示的列表条目:String courses = “Math”, “English”, “Physics”, “Chemic”, “Biology”, “Politics”;JList courseList = new JList(courses);如果列表框比较长,而显示屏幕比较小,可以设置列表中显如果列表框比较长,而显示屏幕比较小,可以设置列表中显示的行数,同时使
36、用示的行数,同时使用滚动条滚动条:courseList.setVisibleRowCount(4);JScrollPane listScrollPane = new JScrollPane(courseList);Swing的常用组件的常用组件列表框列表框(JList)2022年年6月月12日星期日日星期日NCEPUq选择列表框中的多个条目有两种方式:连续条目选择和间断条目选择。选择列表框中的多个条目有两种方式:连续条目选择和间断条目选择。q用户选择列表框条目时,列表框就会产生选择事件。将列表选择监听器用户选择列表框条目时,列表框就会产生选择事件。将列表选择监听器ListSelectionLi
37、stener添加给列表组件,并在该监听器中实现添加给列表组件,并在该监听器中实现valueChanged方法:方法:courseList.addListSelectionListener(new courseListener();.class courseListener implements ListSelectionListenerpublic void valueChanged(ListSelectionEvent event).p获得用户所选择的列表框条目以及条目所在的索引号需要使用获得用户所选择的列表框条目以及条目所在的索引号需要使用getSelectedValues方法和方法和ge
38、tSelectedIndices方法:方法:Object selectedCourses = courseList.getSelectedValues();intselectedIndexCourses=courseList.getSelectedIndices();Swing的常用组件的常用组件列表框列表框(JList)2022年年6月月12日星期日日星期日NCEPUv JList(列表框列表框)可以选择一项或多项可以选择一项或多项。列表框查阅JDK文档,学习JList类的常用方法及相关事件。Swing的常用组件的常用组件列表框列表框(JList)2022年年6月月12日星期日日星期日NCE
39、PU练习练习2022年年6月月12日星期日日星期日NCEPU例:创建一个包含列表框和文本框的窗口,要求单击或双例:创建一个包含列表框和文本框的窗口,要求单击或双击击列表框中某一选项后,文本框中显示该选项。列表框中某一选项后,文本框中显示该选项。awt的常用组件的常用组件列表框列表框(List)import java.awt.*; import java.awt.event.*;public class List1 implements ActionListener ,ItemListener Frame f; TextField tf1; List ls1; public void displ
40、ay() f = new Frame(列表框练习); f.setSize(300,200); f.setLocation(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)
41、; ls1.addItemListener(this); public void actionPerformed(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年年6月月12日星期日日星期日NCEPUSwing的常用组件的常用组件菜单菜单JMenuItem类型有三
42、种:类型有三种:JMenuItem JCheckBoxMenuItem JRadioButtonMenuItemJMenuBarJMenuJMenuItem2022年年6月月12日星期日日星期日NCEPU 菜单的分类菜单的分类菜单条式菜单(下拉菜单)菜单条式菜单(下拉菜单)弹出式菜单弹出式菜单 菜单组件与其他组件不同,不能放入普通的容器,也无菜单组件与其他组件不同,不能放入普通的容器,也无法用布局管理器对其加以控制,只能被放入菜单容器中。法用布局管理器对其加以控制,只能被放入菜单容器中。Swing的常用组件的常用组件菜单菜单2022年年6月月12日星期日日星期日NCEPU下拉式菜单下拉式菜单v
43、 下拉式菜单主要由三部分组成下拉式菜单主要由三部分组成 菜单条菜单条(JMenuBar) 菜单菜单(JMenu) 菜单项菜单项(JMenuItem)。菜单栏菜单栏菜单条菜单条菜菜单单菜单项菜单项2022年年6月月12日星期日日星期日NCEPUq 创建菜单栏创建菜单栏 JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar);q 创建菜单创建菜单JMenu fileMenu = new JMenu(File);q 创建子菜单。创建子菜单。JMenu optionMenu = new JMenu(Option);q 创建菜单项创建菜单项 JMe
44、nuItem newfile=new JMenuItem(新建);创建下拉式菜单创建下拉式菜单 将菜单项加入到子菜单或菜单中。将菜单项加入到子菜单或菜单中。 将子菜单加入到菜单中。将子菜单加入到菜单中。 将菜单加入到菜单栏中。将菜单加入到菜单栏中。创建菜单的步骤创建菜单的步骤 import javax.swing.*; import java.awt.event.*;public class MenuDemo extends JFrame implements ActionListenerJTextArea tf=new JTextArea();JMenuBar mbar=new JMenuB
45、ar(); JMenu menu=new JMenu(文件); JMenuItem newfile=new JMenuItem(新建); JMenuItem open=new JMenuItem(打开);JMenuItem close=new JMenuItem(关闭);JMenuItem quit=new JMenuItem(退出); 创建菜单的步骤创建菜单的步骤public MenuDemo()super(Menu实例); newfile.addActionListener(this);open.addActionListener(this);close.addActionListener
46、(this);quit.addActionListener(this); menu.add(newfile); menu.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(Action
47、Event e)if(e.getSource()=newfile) tf.setText(新建文件);if(e.getSource()=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年年6月月12日星期日日星期日NCEPU同创建
48、一般的菜单项几乎一样,只需注意复选框和单选按钮的不同构造方同创建一般的菜单项几乎一样,只需注意复选框和单选按钮的不同构造方法以及单选按钮组的构建:法以及单选按钮组的构建:创建单选按钮菜单项创建单选按钮菜单项“Forward”,并将,并将“Forward”菜单项加入到菜单项加入到“Search”菜单中。菜单中。ButtonGroup group = new ButtonGroup();forwardItem = new JRadioButtonMenuItem(Forward);group.add(forwardItem);searchMenu.add(forwardItem);创建复选框菜单项
49、创建复选框菜单项“ToolBar”,并加入到子菜单中。,并加入到子菜单中。JCheckBoxMenuItem toolItem = new JCheckBoxMenuItem(ToolBar);optionMenu.add(toolItem);创建复选框和单选按钮菜单项创建复选框和单选按钮菜单项 2022年年6月月12日星期日日星期日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, InputEve
51、nt.CTRL_MASK);Swing的常用组件的常用组件菜单菜单2022年年6月月12日星期日日星期日NCEPUv弹出式菜单弹出式菜单弹出式菜单的创建和菜单的创建基本相同,也需要新建一弹出式菜单的创建和菜单的创建基本相同,也需要新建一个弹出式菜单后再加入菜单项。个弹出式菜单后再加入菜单项。l弹出式菜单。弹出式菜单。 popup = new JPopupMenu();l新建弹出式菜单中的新建弹出式菜单中的“Cut”菜单项和监听器。菜单项和监听器。cutItemPop = new JMenuItem(Cut, C);popup.add(cutItemPop);Swing的常用组件的常用组件菜单菜
52、单2022年年6月月12日星期日日星期日NCEPU菜单示例菜单示例 2022年年6月月12日星期日日星期日NCEPU创建菜单栏创建菜单栏创建菜单加入到菜单栏中创建菜单加入到菜单栏中创建菜单项加入到菜单中创建菜单项加入到菜单中最后将整个菜单栏加入到某个容器中最后将整个菜单栏加入到某个容器中(Frame)事件处理事件处理创建菜单的步骤创建菜单的步骤2022年年6月月12日星期日日星期日NCEPU创建如下图所示的带菜单的窗口,完成相应的绘图功能。创建如下图所示的带菜单的窗口,完成相应的绘图功能。2022年年6月月12日星期日日星期日NCEPUimport java.awt.*; import jav
53、a.awt.event.*;public class MenuExp implements ActionListener Frame f; MenuBar myMenuBar; Menu menuDraw,menuHelp; MenuItem itemCircle,itemRect,itemLine; public void display() f = new Frame(带有菜单的窗口); f.setSize(300,300); f.setLocation(300,300); f.setBackground(Color.lightGray); myMenuBar=new MenuBar();
54、 menuDraw=new Menu(画图); menuHelp=new Menu(帮助); myMenuBar.add(menuDraw); myMenuBar.add(menuHelp); itemCircle=new MenuItem(画圆); itemRect=new MenuItem(画矩形); itemLine=new MenuItem(画线); 2022年年6月月12日星期日日星期日NCEPU menuDraw.add(itemLine); menuDraw.add(itemCircle); menuDraw.add(itemRect); f.setMenuBar(myMenuB
55、ar); f.setVisible(true); itemCircle.addActionListener(this); itemRect.addActionListener(this); itemLine.addActionListener(this); public void actionPerformed(ActionEvent e) if(e.getActionCommand()=“画圆”) f.getGraphics().drawOval(100,100,150,150); else if(e.getActionCommand()=“画矩形”) f.getGraphics().dra
56、wRect(50,100,100,100); else if(e.getActionCommand()=“画线”) f.getGraphics().drawLine(100,100,200,200); public static void main(String arg) (new MenuExp().display(); 2022年年6月月12日星期日日星期日NCEPU创建创建JMenuItem先创建一个先创建一个JMenuBar对象对象再创建若干个再创建若干个JMenu对象对象添加处理事件添加处理事件添加添加JMenuItem到到JMenu添加添加JMenu到到JMenuBar添加添加JM
57、enuBar到容器到容器2022年年6月月12日星期日日星期日NCEPU先创建一个先创建一个JMenuBar对象对象再创建若个再创建若个JMenu对象对象2022年年6月月12日星期日日星期日NCEPUSwing常用的组件常用的组件对话框对话框v对话框分为模式对话框和无模式对话框。对话框分为模式对话框和无模式对话框。模式对话框必须在用户处理完后才允许用户与主窗口继续进行交互。模式对话框必须在用户处理完后才允许用户与主窗口继续进行交互。无模式对话框允许用户同时在对话框和程序剩余部分中输入信息。无模式对话框允许用户同时在对话框和程序剩余部分中输入信息。在在Swing中,提供了四种简单的对话框:中,
58、提供了四种简单的对话框: showMessageDialog:显示一条消息等待用户点击:显示一条消息等待用户点击OK; showConfirmDialog:显示一条消息并等待确认;:显示一条消息并等待确认; showOptionDialog:显示一条消息并等待用户在一组自定义选:显示一条消息并等待用户在一组自定义选项中的选择;项中的选择; showInputDialog:显示一条消息并等待用户的输入。:显示一条消息并等待用户的输入。2022年年6月月12日星期日日星期日NCEPU以以showConfirmDialog为例:为例:对话框的使用对话框的使用底部按钮的类型和对话框有密切的关系,对于底
59、部按钮的类型和对话框有密切的关系,对于showMessageDialog和和showInputDialog对话框来说,只能有一组标准按钮,分别是对话框来说,只能有一组标准按钮,分别是OK和和OK/CANCEL。对于。对于showConfirmDialog,按钮可以包括四种:,按钮可以包括四种:DEFAULT_OPTION,YES_NO_OPTION,YES_NO_CANCEL_OPTION,OK_CANCEL_OPTION。intselection=JOptionPane.showConfirmDialog(DialogFrame.this,/父窗口父窗口“Areyousure?”,“Logout
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 温州住宅装修合同范本
- 欠款分期偿还合同范本
- 商店房屋租赁合同范本
- 学校宿舍合同范本
- 租用公司资质合同范本
- 防汛物资供货合同范本
- 酒店维修劳务合同范本
- 病句表意不明30题及答案
- 企业宣传与介绍模板
- 2025智能楼宇自动化控制系统广告宣传合同范本
- 第八课 良师相伴 亦师亦友
- 全国高考物理高考题说题比赛一等奖课件物理说题李焕景
- 华为MA5800配置及调试手册
- 巴金名著导读《寒夜》
- 2024年建筑业10项新技术
- 《环境建设工程概算、预算编制办法》
- 提升服务行业人员的职业道德和职业素养
- 按摩椅行业分析及市场前景展望报告
- 2024年上海外服招聘笔试参考题库附带答案详解
- 改善患者就医体验培训课件
- 养殖乌龟入门知识培训课件
评论
0/150
提交评论