版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、主讲教师主讲教师: : xxxxxx Java语言程序设计语言程序设计 10.1 AWT基础基础1 AWT(java.awt)提供用于所有Java程序中的基本GUI 组件,能够为应用程序提供与机器无关的界面。这将 保证一台计算机上出现的东西与另一台上的相一致。 显示在屏幕上的每个GUI组件都是抽象类组件 Component类的子类。也就是说,每个从组件类扩展来 的大量方法和实例变量都是相同的。 10.1 AWT基础基础2 AWT类层次结构图如下: 10.1 AWT基础基础3 容器类Container是组件类 Component的一个抽象子类,它 允许其它的组件被嵌套在里面。 这些组件也可以是允
2、许其它组件 被嵌套在里面的容器,于是就创 建了一个完整的层次结构。在屏 幕上布置GUI组件,容器是很有 用的。 10.1 AWT基础基础4 AWT类层次结构图如下: 10.2 Frame类类1 Frame是Window的一个子类。它是带有标题和缩放角的窗口。 它继承于java.awt.Container,因此,可以用add()方式来给框架添加 组件。框架类中的构造程序 Frame(String)用由String规定的标题来创 建一个新的不可见的框架对象。当它还处于不可见状态时,将所有 组件添加到框架中。 import java.awt.*; public class MyFrame exten
3、ds Frame public static void main (String args) MyFrame fr = new MyFrame(Hello Out There!); fr.setSize(500,500);fr.setBackground(Color.blue); fr.setVisible(true); public MyFrame (String str) super(str); 10.2 Frame类类2 运行结果: 10.3 Pane类类1 象Frames一样,Panels提供空间来装载任何GUI组件,包括其它面板。 一旦一个面板对象被创建,为了能看得见,它必须添加到窗
4、口或框架 对象上。用Container类中的add()方式可以做到这一点。 import java.awt.*; public class FrameWithPanel extends Frame public FrameWithPanel (String str) super (str); public static void main (String args) FrameWithPanel fr = new FrameWithPanel (Frame with Panel); Panel pan = new Panel(); fr.setSize(200,200); fr.setBack
5、ground(Color.blue); pan.setSize (100,100); pan.setBackground(Color.yellow); fr.add(pan); fr.setVisible(true); 10.3 Pane类类2 10.4 布局管理器布局管理器1 容器中组件的布局通常由布局管理器控制。每个Container(比 如一个Panel或一个Frame)都有一个与它相关的缺省布局管理器, 它可以通过调用setLayout()来改变。 布局管理器负责决定布局方案,以及其容器的每一个子组件的 大小。 下面的布局管理器包含在Java编程语言中: - Flow LayoutPa
6、nel和Applets的缺省布局管理器 - Border LayoutWindow、Dialog及Frame的缺省管理程序 - Grid Layout - Card Layout - GridBag Layout 10.4 布局管理器布局管理器2 (a)Flow Layout的一个简单例子的一个简单例子 import java.awt.*; public class ExGui private Frame f; private Button b1; private Button b2; private Button b3; public static void main(String args
7、) ExGui guiWindow = new ExGui(); guiWindow.go(); public void go() f = new Frame(GUI example); f.setLayout(new FlowLayout(); b1 = new Button(“Ok); b2 = new Button(“Open); b3 = new Button(“Close); f.add(b1); f.add(b2); f.add(b3); f.pack(); f.setVisible(true); 10.4 布局管理器布局管理器3 10.4 布局管理器布局管理器4 (b) Bord
8、er布局管理器 Border布局管理器为在一个Panel或Window中放置组件提供一个 更复杂的方案。Border布局管理器包括五个明显的区域:东、南、 西、北、中。 北占据面板的上方,东占据面板的右侧,等等。中间区域是在 东、南、西、北都填满后剩下的区域。当窗口垂直延伸时,东、西、 中区域也延伸;而当窗口水平延伸时,南、北、中区域也延伸。 Border布局管理器是用于Dialog和Frame的缺省布局管理器。 10.4 布局管理器布局管理器5 public class ExGui2 private Frame f; private Button bn, bs, bw, be, bc; pu
9、blic static void main(String args) ExGui2 guiWindow2 = new ExGui2(); guiWindow2.go(); public void go() f = new Frame(Border Layout); bn = new Button(B1); bs = new Button(B2); be = new Button(B3); bw = new Button(B4); bc = new Button(B5); f.add(bn, BorderLayout.NORTH); f.add(bs, BorderLayout.SOUTH);
10、f.add(be, BorderLayout.EAST); f.add(bw, BorderLayout.WEST); f.add(bc, BorderLayout.CENTER); f.setSize (200, 200); f.setVisible(true); 10.4 布局管理器布局管理器6 10.4 布局管理器布局管理器7 (c)Grid(c)Grid布局管理器布局管理器 为放置组件提供了灵活性。用许多行和栏来创建管理程序。然 后组件就填充到由管理程序规定的单元中。比如,由语句new GridLayout(3,2)创建的有三行两栏的Grid布局能产生如下六个单 元: setLayou
11、t(new GridLayout(3,2); add(new Button(1); add(new Button(2); add(new Button(3); add(new Button(4); add(new Button(5); add(new Button(6); 10.4 布局管理器布局管理器8 (d)Card(d)Card布局管理器布局管理器 Card布局管理器能将界面看作一系列的卡,其中的一个在任何 时候都可见。用add()方法来将卡添加到Card布局中。Card布局管 理器的show()方法应请求转换到一个新卡中。下例就是一个带有一 系列卡的框架。 CardLayout myC
12、ard = new CardLayout() f.setLayout(myCard); f.add(p1, First); f.add(p2, Second); myCard.show(f,First); myCard.next(); myCord.previous(); 10.5 GUI组件上的图形操作组件上的图形操作-1 zGUI组件上的图形操作: zGUI组件上的图形操作主要包括:绘制二维 图形、控制颜色和字体等等。 zjava. awt 包中提供了许多图形操作的类: z Graphics类:提供了许多处理图形的方法,如绘 制线条、各种矩形、各种椭圆、弧线和多边形等。 z Color类:
13、包含了操作颜色的方法和常量。 z Font类:包含了操作字体的方法和常量。 10.5 GUI组件上的图形操作组件上的图形操作-2 z组件的重绘 zAWT线程在重新绘制组件(如最小化后恢复)时,会自动 调用组件的paint( )方法(在Component类中定义),paint( ) 方法定义的如下:public void paint(Graphics g) z因此,组件重绘的代码应该在paint( )方法中编写。由于不 能直接进入到某个组件的paint( )方法中修改其代码,所以, 常用的处理方式是:定义一个继承需重绘组件的子类,在 子类中重写paint( )方法,在这个新的paint( )方法
14、中编写重绘 代码。 zGraphics类提供了许多绘制基本图形的方法: z绘制直线 z绘制矩形 z绘制椭圆 z绘制弧线 z绘制多边形 z绘制文本 10.5 GUI组件上的图形操作组件上的图形操作-3 z绘制直线方法: void drawLine(int x1, int y1, int x2, int y2) z描述: 在点(x1,y1)和点(x2,y2)之间绘制一条直线 10.5 GUI组件上的图形操作组件上的图形操作-4 z绘制矩形的常用方法如下: zvoid drawRect(int x, int y, int width, int height) 绘制矩形,点(x,y)为左上角坐标,宽度
15、、高度分别为 width和height zvoid drawRect(int x, int y, int width, int height, int arcWidth, int arcHeight) 绘制圆角矩形,点(x,y)为外接矩形左上角坐标, arcWidth和arcHeight分别为弧度和弧高 zvoid fillRect(int x, int y, int width, int height) 绘制填充矩形 zvoid fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) 绘制
16、填充圆角矩形 10.5 GUI组件上的图形操作组件上的图形操作-5 z绘制文本(字符串)方法: void drawString(String str, int x, int y) z描述: 从点(x,y)处开始从左至右绘制字符串str 10.5 GUI组件上的图形操作组件上的图形操作-6 z建立颜色 z颜色类Color的常用构造方法: public Color(int r, int g, int b) 上述构造函数根据指定的红色、绿色和蓝色的亮度 (它们的范都是0255)来创建一个颜色。 zColor类提供了若干静态常量用于表示常见的颜色,如 Color.RED、Color.GREEN、Col
17、or.BLUE、Color.WHITE、 Color.GRAY、Color.PINK 等。 10.5 GUI组件上的图形操作组件上的图形操作-7 z建立字体 z字体类Font的常用构造方法: public Font(String name, int style, int size) zname用于指定字体名 zstyle指定字体样式(Font.BOLD、Font.ITALIC、 Font.PLAIN) zsize用于指定字体大小 10.5 GUI组件上的图形操作组件上的图形操作-8 zComponent类的常用方法如下,各种常用组件都 可以使用这些方法来设置属性: public int get
18、X( ) , public int getY( ) public int getWidth( ) , public int getHeight( ) public void setLocation(int x , int y) public void setSize(int width , int height) public void setBounds(int x, int y, int width , int height) 10.5 GUI组件上的图形操作组件上的图形操作-9 zComponent类的常用方法: public void setVisible(boolean b) pub
19、lic void setForeground(Color c) public Color getForeground( ) public void setBackground(Color c) public Color getBackground( ) public void setFont(Font f) public Font getFont( ) 10.5 GUI组件上的图形操作组件上的图形操作-10 10.6 常用组件常用组件1 1. 按钮(Button) 这个组件提供了“按下并动作”的基本用户界面。可以构造一 个带文本标签的按钮,用来告诉用户它的作用。 Button类常用方法: pu
20、blic String getLabel( ) public void setLabel(String label) public String getActionCommand( ) public void setActionCommand (String command) public void addActionListener (ActionListener listener) 10.6 常用组件常用组件2 2.复选框(复选框(Checkbox) 提供从“选中”和“未选中”两种状态选其一的功能。当用户 点击复选框时,若原状态是true(已选中状态),则变为false(未 选中状态);若
21、原状态状态是flase,则点击后状态变为true。 Checkbox类常用方法: public Checkbox(String label) public Checkbox(String label, boolean state) public Checkbox(String label, boolean state, CheckboxGroup group) 复选框组提供了将多个复选框作为互斥的一个集合的方法, 因此在任何时刻,这个集合中只有一个复选框的值是true。 10.6 常用组件常用组件3 Checkbox类常用方法: public String getLabel( ) public
22、 void setLabel(String label) public boolean getState( ) public void setState(boolean state) public void setCheckboxGroup (CheckboxGroup g) 10.6 常用组件常用组件4 3.列表框(列表框(ListList) 以目录的形式显示字符串选项,并允许用户从中选取一项或多 项,构成目录的元素,我们称之为列表项(item)。 List类常用方法: public List(int rows) public List(int rows, boolean multipleM
23、ode) public void add(String item) public void add(String item, int index) 10.6 常用组件常用组件5 List类常用方法: public String getItem(int index) public String getSelectItem( ) public void remove(int position) public void removeAll( ) public void select(int index) 10.6 常用组件常用组件6 4.下拉列表(Choice) 下拉列表组件提供了一个简单的“从列表
24、中选取一个的输入。 与List一样Choice也支持目录形式的列表,不同的是用户只能选取其 中一项,且只有被选中的项才会显示出来。 10.6 常用组件常用组件7 5.标签(Label) 一个标签对象显示一行静态文本。程序可以改变文本,但用户 不能改变。标签没有任何特殊的边框和装饰。 Label类常用方法 public Label(String text) public Label(String text, int alignment) Label.CENTER Label.LEFT Label.RIGHT public String getText( ) public void setText
25、(String text) 10.6 常用组件常用组件8 6.文本域(TextField) 文本域是一个单行文本框,可以向其中输入一行字符串或对其 内容进行修改。 TextField类常用方法: public TextField(String text) public TextField(int columns) public TextField(String text, int columns) public void setText(String text) public String getText( ) public void setEchoChar(char c) /用于输入密码的文
26、本字段。 10.6 常用组件常用组件9 7.文本区(TextArea) 文本区是多行文本框,同样用于显示文本字符串,用户也可以 对其中的字符串进行编辑。 TextArea类常用方法: public TextArea(String text) public TextArea(int rows, int columns) public TextArea(String text, int cows, int columns) public TextArea(String text, int cows, int columns , int scrollbars) TextArea .SCROLLBAR
27、S_BOTH, TextArea . SCROLLBARS_HORIZONTAL_ONLY TextArea . SCROLLBARS_VERTICAL_ONLY TextArea . SCROLLBARS_NONE 10.7 事件模型事件模型1 v事件 事件是描述发生了什么的对象。存在各种不同类型的事件类用来 描述各种类型的用户交互。如:ActionEvent ItemEvent TextEvent (在 java.awt.event包中)等。 其中包含刚才所发生的那个事件时的各类信息。 getActionCommand()返回与事件相关联的命令字符串。 getModifiers()返回事件
28、发生时所持有的修饰符。 getSource() 返回事件源。 v事件源 事件源是一个事件的产生者。例如,在Button组件上点击鼠标会 产生以这个Button 为源的一个ActionEvent事件。 v事件处理器(监听器) 事件处理器是一个对象,它能接收事件,并具有解释事件、处理 事件的方法。 10.7 事件模型事件模型2 事件模型 JDK1.0采用的是层次事件模型,而JDK1.1以及更高的版本采用 的是委托事件模型。 层次事件模型 10.7 事件模型事件模型3 委托事件模型 当用户与GUI的组件交互,触发了相应的事件时,组件本身并 不直接处理事件,而是将事件的处理工作委托给事件监听器。这样,
29、 我们就可以在任何地方对事件进行处理了。 10.7 事件模型事件模型4 class ActionEvent /事件类 new ActionEvent(); interface ActionListener void actionPerformed(ActionEvent e); class Handler implements ActionListener void actionPerformed(ActionEvent e) ;/事件处理 Button b = new Button(); /事件源 b.addActionListener(ActionListener a);/注册监听器 10
30、.7 事件模型事件模型5 委托事件模型图 10.7 事件模型事件模型6 采用委托事件模型进行事件处理的一般步骤为: 第一 确定Event Source,知道什么组件要被处理 第二 确定Event,知道什么样的事件要被处理 第三 实现Event Listener,即编写实现Event Listener 的事件处理代码 在此过程中,我们需要将事件监听器对象与事件源的某种事 件关联起来,这个关联的过程称为向事件源注册(Registering) 事件监听器。 10.7 事件模型事件模型7 编写事件处理代码的编写事件处理代码的3 3种常用的方式:种常用的方式: 1. 实现GUI的类和实现事件处理的监听器
31、类分别定义,专门定义监 听器类来实现某种监听器接口以对某种事件进行处理。可以用 一个监听器类实现对多个可能产生同类型事件的组件进行监听 和处理; 2.直接在GUI组件所在的类中实现监听器接口,必须在类定义时用 implements声明要实现哪些接口,并在类中实现这些接口的所 有抽象方法; 3. 用Inner class的特殊形式匿名类来实现监听器,在向组件 注册监听器时,直接用new创建一个实现了监听器接口的匿名类 的对象,实现其抽象方法对组件上的事件进行处理。 10.7 事件模型事件模型8 委托事件模型举例1:import java.awt.*; public class TestButto
32、n public static void main(String args) Frame f = new Frame(Test); Button b = new Button(Press Me!); b.addActionListener(new ButtonHandler(); f.add(b,Center); f.pack(); f.setVisible(true); ButtonHandler类是一个处理器类,事件将被委托给这个类。类是一个处理器类,事件将被委托给这个类。 import java.awt.event.*; public class ButtonHandler implem
33、ents ActionListener public void actionPerformed(ActionEvent e) System.out.println(Action occurred); System.out.println(Buttons label is : + e.getActionCommand(); 10.7 事件模型事件模型9 委托事件模型举例2: Public class ButtonDemo extends Frame implentments ActionListener Button b; public static void main(String args)
34、 ButtonDemo frame=new ButtonDemo(); public ButtonDemo() b = new Button(Sample); b.addActionListener(this); add(b); setSize(130,100);setVisible(true); public void actionPerformed(ActionEvent ae) System.out.println(Button press received.); System.out.println(Buttons action command is: + ae.getActionCo
35、mmand(); 10.7事件模型事件模型10 java.lang.Object java.util.EventObject java.awt.AWTEvent ActionEvent AdjustmentEvent ComponentEvent ItemEvent TextEvent FocusEvent InputEvent WindowEvent ContainerEvent PaintEvent KeyEvent MouseEvent ListSelectionEvent ChangeEvent 10.7 事件模型事件模型11 接口类型及所包含方法声明:接口类型及所包含方法声明: Ac
36、tionEvent ActionListener actionPerformed(ActionEvent e) addActionListener() ItemEvent ItemListener itemStateChanged(ItemEvent e) addItemListener() MouseEventMouseListener mouseClicked(MouseEvent e) addMouseListener() mousePressed(MouseEvent e) mouseReleased(MouseEvent e) mouseEntered(MouseEvent e) m
37、ouseExited(MouseEvent e) MouseEventMouseMotionListener mouseDragged(MouseEvent e) addMouseMotionListener() mouseMoved(MouseEvent e) WindowEventWindowListener windowOpened(WindowEvent e) addWindowListener() windowClosing(WindowEvent e) windowClosed(WindowEvent e) windowIconified(WindowEvent e) window
38、Deiconified(WindowEvent e) windowActivated(WindowEvent e) windowDeactivated(WindowEvent e) ActionEvent类类-1 zActionEvent类对应一个动作事件,如点击按钮、选择 菜单项、单行文本框中输入字符串并按下回车键等等, 都可看作是ActionEvent类的事件。 z可能产生ActionEvent事件的AWT组件主要有:Button、 TextField、MenuItem、List zActionEvent类对应的监听器接口是ActionListener,事 件源使用addActionLis
39、tener(ActionListener listener) 方法来注册事件该类事件的监听器。 ActionEvent类类-2 zActionEvent类常用方法: zpublic String getActionCommand( ) zpublic Object getSource( ) zpublic int getModifier( ) ActionEvent. SHIFT_MASK ActionEvent. CTRL_MASK z处理ActionEvent事件的监听器接口是 ActionListener,其中只包含一个方法: zpublic void actionPerformed(A
40、ctionEvent e) z当ActionEvent事件发生时该方法被调用,重写该方法对 ActionEvent事件进行处理 ItemEvent类类 zItemEvent类事件是发生在具有项目选择功能组件上的,比如,选中List或 Choice中的选项,或是改变了Checkbox的状态时,就会引发ItemEvent事件。 zItemEvent类常用方法: zpublic Object getItem( ) zpublic int getStateChange( ) z / ItemEvent .SELECTED, ItemEvent.DESELECTED z处理ItemEvent事件,需要实
41、现ItemListener接口,其中包含1个方法: zpublic void itemStateChanged(ItemEvent e) z当选项的选择状态发生改变时被调用 MouseEvent类类-1 zMouseEvent事件是用户使用鼠标在某个组件上进行某种动作 时产生的事件,比如鼠标单击组件、鼠标移入组件区域、鼠 标移出组件区域等等都会发生MouseEvent事件。 zMouseEvent类常用方法: zpublic int getClickCount( ) zpublic Point getPoint( ) zpublic int getX( ) zpublic int getY(
42、) zpublic int getButton( ) /那个鼠标按键发生改变那个鼠标按键发生改变 MouseEvent类类-2 z与MouseEvent事件对应的监听器接口有2个: MouseListener 和 MouseMotionListener zMouseListener接口主要处理鼠标单击、按下、释放、移入 组件和移出组件的事件,该接口包含5个方法: zvoid mouseClicked(MouseEvent e) zvoid mousePressed(MouseEvent e) zvoid mouseReleased(MouseEvent e) zvoid mouseEntere
43、d(MouseEvent e) zvoid mouseExited(MouseEvent e) MouseEvent类类-3 zMouseMotionListener: zMouseMotionListener接口负责处理鼠标的拖 放和移动事件,该接口包含2个方法: zvoid mouseDragged(MouseEvent e) zvoid mouseMoved(MouseEvent e) KeyEvent类类-1 zKeyEvent事件是与键盘相关的事件,当KeyEvent事件 的事件源处于激活状态时,按下、释放或敲击键盘上 的某个键会引发KeyEvent事件。 zKeyEvent类常用方
44、法: zpublic char getKeyChar( ) zpublic int getKeyCode( ) zpublic static String getKeyText(int keyCode) zVK_1 VK_A VK_F1 VK_PAGE_DOWNVK_PAGE_DOWN KeyEvent类类-2 zKeyListener: z处理KeyEvent事件的监听器接口是 KeyListener,其中包含3个方法 : zvoid keyTyped(KeyEvent e) zvoid keyPressed(KeyEvent e) zvoid keyReleased(KeyEvent e)
45、 TextEvent类类 zTextEvent事件发生在文本组件中的字符串发生改变时。 z前面介绍的ActionEvent事件也可以发生TextField上,但 它产生的时机是输入文本并按下Enter键之后,TextEvent 事件是在向TextField输入字符串而还未按下Enter键时就 会引发的事件。 z处理TextEvent事件的监听器接口是TextListener,该接口 中只包含1个方法: zvoid textValueChanged(TextEvent e) WindowEvent类类 zWindowEvent事件是发生在窗口对象上的事件,当用户或应用程 序在打开、关闭、最大或最
46、小化窗口等时发生WindowEvent事件。 z处理WindowEvent事件需要实现WindowListener接口,其中包含7 个方法: zvoid windowOpened(WindowEvent e) zvoid windowClosing(WindowEvent e) zvoid windowClosed(WindowEvent e) zvoid windowIconified(WindowEvent e) zvoid windowDeiconified(WindowEvent e) zvoid windowActivated(WindowEvent e) zvoid windowD
47、eactivated(WindowEvent e) 10.7事件模型事件模型 10.8 举例举例1 复选框(Checkbox) Frame f = new Frame(Checkbox) Checkbox one = new Checkbox(One, true); Checkbox two = new Checkbox(Two, false); Checkbox three = new Checkbox(Three, true); one.addItemListener(this); two.addItemListener(this); three.addItemListener(this)
48、; f.add(one); f.add(two); f.add(three); 10.8 举例举例2 选取或不选取(取消)一个复选框的事件将被送往ItemListener接 口。所传递的ItemEvent包含getStatechange()方法,它根据实际情况 返回ItemEvent.DESELECTED或ItemEvent.SELECTED。getItem()方 法将受到影响的复选框,作为一个表示这个复选框标签的String对象 返回。 class Handler implements ItemListener public void itemStateChanged(ItemEvent e
49、v) String state = deselected; if (ev.getStateChange() = ItemEvent.SELECTED) state = selected; System.out.println(ev.getItem() + + state); 10.8 举例举例3 复选框组提供了将多个复选框作为互斥的一个集合的方法,因 此在任何时刻,这个集合中只有一个复选框的值是true。值为true的 复选框就是当前被选中的复选框。你可以使用带有一个额外的 CheckboxGroup参数的构造函数来创建一组中的每个复选框。正是 这个CheckBoxGroup对象将各个复选框连
50、接成一组。 Frame f = new Frame(Checkbox Group); CheckboxGroup cbg = new CheckboxGroup(); Checkbox one = new Checkbox(One, false, cbg); Checkbox two = new Checkbox(Two, false, cbg); Checkbox three = new Checkbox(Three, true, cbg); one.addItemListener(this); two.addItemListener(this); three.addItemListener
51、(this); f.add(one); f.add(two); f.add(three); 10.8 举例举例4 下拉列表组件提供了一个简单的“从列表中选取一个”类型的输入。 例如: Frame f = new Frame(Choice); Choice c = new Choice(); c.add(First); c.add(Second); c.add(Third); c.addItemListener(this); f.add(c); 点击下拉列表组件时,它会显示一个列表,列表中包含了所有加入 其中的条目。注意所加入的条目是String对象。ItemListener接口 用来观察下拉列
52、表组件的变化,其细节和复选框的相同。 10.8 举例举例5 public class MyCanvas extends Canvas implements KeyListener int index; Color colors = Color.red, Color.green, Color.blue ; public void paint(Graphics g) g.setColor(colorsindex); g.fillRect(0,0,getSize().width,getSize().height); public static void main(String args) Frame
53、 f = new Frame(Canvas); MyCanvas mc = new MyCanvas(); f.add(mc, BorderLayout.CENTER); f.setSize(150, 150); mc.requestFocus(); mc.addKeyListener(mc); f.setVisible(true); public void keyTyped(KeyEvent ev) index+; if (index = colors.length) index =0; repaint(); public void keyPressed(KeyEvent ev) publi
54、c void keyReleased(KeyEvent ev) 10.8 举例举例6 菜单与其他组件有一个重要的不同:你不能将菜单添加到一般菜单与其他组件有一个重要的不同:你不能将菜单添加到一般 的容器中,而且不能使用布局管理器对它们进行布局。的容器中,而且不能使用布局管理器对它们进行布局。你可以通过你可以通过 使用使用setMenuBarsetMenuBar()()方法将菜单条放到一个框架中,从而启动一个菜方法将菜单条放到一个框架中,从而启动一个菜 单单“树树”。从那个时刻之后,你可以将菜单加到菜单条中,并将菜。从那个时刻之后,你可以将菜单加到菜单条中,并将菜 单或菜单项加到菜单中。单或菜单
55、项加到菜单中。 菜单条菜单条(MenuBar) 一个菜单条组件是一个水平菜单。它只能加入到一个框架中,一个菜单条组件是一个水平菜单。它只能加入到一个框架中, 并成为所有菜单树的根。在一个时刻,一个框架可以显示一个菜单并成为所有菜单树的根。在一个时刻,一个框架可以显示一个菜单 条。然而,你可以根据程序的状态修改菜单条,这样在不同的时刻条。然而,你可以根据程序的状态修改菜单条,这样在不同的时刻 就可以显示不同的菜单。例如:就可以显示不同的菜单。例如: Frame f = new Frame(MenuBar); MenuBar mb = new MenuBar(); f.setMenuBar(mb)
56、; 10.8 举例举例7 菜单条不支持监听者。作为普通菜单行为的一部分,在菜单条 的区域中发生的预期事件会被自动处理。 10.8 举例举例8 菜单组件提供了一个基本的下拉式菜单。它可以加入到一个菜菜单组件提供了一个基本的下拉式菜单。它可以加入到一个菜 单条或者另一个菜单中。例如:单条或者另一个菜单中。例如: MenuBar mb = new MenuBar(); Menu m1 = new Menu(File); Menu m2 = new Menu(Edit); Menu m3 = new Menu(Help); mb.add(m1); mb.add(m2); mb.setHelpMenu(m3); f.setMenuBar(mb); 10.8 举例举例9 菜单项(MenuItem) 菜单项组件是菜单树的文本菜单项组件是菜单树的文本“叶叶”结点。它们通常被加入到菜结点。它们通常被加入到菜 单中,以构成一个完整的菜单。单中,以构成一个完整的菜单。通常,将一个通常,将一个ActionListener加入加入 到一个菜单项对象中,以提供菜单的行为。到一个菜单项对象中,以提供菜单的行为。例如:例如: Menu m1 = new
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度排水设施保险合同4篇
- 二零二五版饭店蔬菜肉类产地直供合作合同2篇
- 二零二五年度全新科技项目居间合作费合同模板下载2篇
- 二零二五年度内蒙古肉牛产业链人才培养与引进合同
- 2025年度汽车销售促销活动执行合同模板
- 二零二五年度学校室内外体育设施一体化采购合同范本3篇
- 2025年度民间借贷合同监督与委托管理服务合同4篇
- 2025年度面粉加工企业二零二五年度绿色有机面粉采购合同4篇
- 2025年度新能源汽车抵押担保服务合同
- 二零二五年度公共绿地养护管理合同范本3篇
- 广东省茂名市电白区2024-2025学年七年级上学期期末质量监测生物学试卷(含答案)
- 2024版个人私有房屋购买合同
- 2024爆炸物运输安全保障协议版B版
- 2025年度军人军事秘密保护保密协议与信息安全风险评估合同3篇
- 《食品与食品》课件
- 读书分享会《白夜行》
- 光伏工程施工组织设计
- DB4101-T 121-2024 类家庭社会工作服务规范
- 化学纤维的鉴别与测试方法考核试卷
- 2024-2025学年全国中学生天文知识竞赛考试题库(含答案)
- 自动驾驶汽车道路交通安全性探讨研究论文
评论
0/150
提交评论