新Java程序设计实例教程教学课件 刘志成 ch05_Java图形用户界面技术

合集下载

第四章 Java图形用户界面设计PPT课件

第四章 Java图形用户界面设计PPT课件
panelObj.add(ScrollPaneObj); } }
复选框
• 可以通过以下构造函数来创建:
- JCheckBox(String text,Icon icon,boolean selected): 新建一个带图标 和标签的复选框
•. .复.选框中常用的方法: IcchoencksiOBebotjxS=Oneeblwje1=cImnteaewgdeJ(IcCbohone(co“kclB:e\o\a1x.ng("i复fs")t选;a框te",)iOBJ,false); paneilOsSbje.aldedc(ctheedck(B) oxObj1);
...
ButtonGroup buttonGroupObj=new ButtonGroup();
buttonGroupObj.add(rButtonObj1); buttonGroupObj.add(rButtonObj2);
建立约 束
文本组合框
• 可以通过以下构造数来创建:
- JComboBox(Object[] items): 新建一个下拉 列表框
创建菜单条添加到容器创建菜单项添加到菜单条中创建菜单子项添加到菜单项中面神经麻痹的病理变化早期主要为面神经水肿髓鞘和轴突有不同程度的变性以在茎乳突孔和面神经管内的部分尤为显著图形界面示例面神经麻痹的病理变化早期主要为面神经水肿髓鞘和轴突有不同程度的变性以在茎乳突孔和面神经管内的部分尤为显著布局管理器每当需要重新调整屏幕大小或重新绘制屏幕上任一项目时就要用到布局管理器
• JTextArea有如下属性: lineWrap、rows、lineCount、tabSize等。
• 可以使用以下方法完成文本区的插入、追 加和替换。 public void insert(Sting s,int pos) public void append(Sting s) public void replaceRange(Sting s,int start,int end)

Java程序设计实训教程课件项目九 图形用户界面设计

Java程序设计实训教程课件项目九 图形用户界面设计

for(int i=0;i<jb.length;i++) { jb[i]=new JButton(); jb[i].setText(String.valueOf(i)); f.getContentPane().add(jb[i]); } f.setVisible(true); } }
请注意和上述awt窗体的异同点:
9.2.2 Applet程序建立及运行过程
1. 源程序的编辑与编译 2. 代码嵌入 3. Applet的运行
9.3 任务三 掌握使用Swing组件进行常用图
形界面设计
Swing组件类型很多,按功能分类如下: (1)、顶层容器:有JFrame(框架), JWindow(窗体),JDialog(对话框)
(4)、构造函数中的参数可以用于设置窗体的标题,也可 以使用setTitle()方法后设置。
(5)、添加组件的方法 add(Component),如: add(button1)。
9.1.2 java.swing包
图9-2 Swing包结构图
【例9-2】创建一个Swing窗体。
import javax.swing.*; import java.awt.*; public class exa9_2 { public static void main(String args[]) {
//创建一个带标题的窗体
JFrame jf1=new JFrame("这是窗体JFrame");
JLabel jb1=new JLabel("欢迎你");
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE
jf1.setLocation(300,200); //设置窗体的显示位置

《Java程序设计与案例》课件 第5章 图形用户界面

《Java程序设计与案例》课件  第5章 图形用户界面
使用repaint()方法可以触发update()方法
编程
调用
控制 repaint()
update()
第一次绘制
paint( )
1. 擦除并填充成背景色 2. 调用paint()
当某些操作破坏了显示,需重新绘制时
Java的图形用户界面
22
显示图象
5
图形与图象,java支持gif和jpeg格式 保存二进制图象的java.awt.Image类 获取Image对象的方法
//must extends Frame in an application
public class Empty extends Frame{ // 暂时采用1.0.2的事件处理方法,关闭窗口
public boolean handleEvent(Event evt){ //根据Event类中参数evt的id值来判断发生事件的种
设计&实现图形用户界面的工作
– 创建GUI各组成成分,并安排从属位置关系,根据 具体需要对其进行排序,构成完整外观。
– 定义GUI各成分对不同事件的响应,实现与用户的 交互功能。
Java的图形用户界面
5
界面构成
5
容器
标准 组件
用户自 定义成

❖容器是用来组织其他界面成分和元素的单元。一 般一个图形用户界面对应一个复杂容器。如一窗口 ❖标准组件是图形用户界面的最小单位,它里面不 再包含其他的成分。如单选按钮,文本框,菜单
getImage(图象文件所在的URL) getImage(图象文件所在的URL,图象文件名) – Applet类以及java.awt.Toolkit中均有方法的定义 – 注意:在application中只能使用Toolkit,而在Applet 中,两者均可使用

Java图形界面设计课件

Java图形界面设计课件
组件类 所有Swing GUI组件类(除JFrame、JApplet和 JDialog)都是JComponent类的子类,例如, JButton、JTextField、JTextArea、JComboBox、 JList、JRadioButton和JMenu等。
Swing轻型组件分类参见教材P202 表12.1
JFrame、JApplet和JDialog等。 非顶层容器,不是独立的窗口,它们必须位于窗口之内,
非顶层容器包括JPanel及JScrollPanel等。
8
12.2.1 Swing组件分类
辅助类和组件类都属于非容器类组件不能包含其他组件的 组件,其种类较多。
辅助类 辅助类是用来描述组件属性的,辅助类通常包含在 java.awt包中,Swing组件不能取代AWT的全部类, 只能替代AWT的GUI组件类,AWT辅助类保持不变。
3
12.1 图形用户界面设计
AWT 和 Swing 是 Java 设计 GUI 用户界面的基础. 与AWT 的重量级组件不同, Swing 中大部分是轻量级组件。
正是这个原因, Swing 几乎无所不能, 不但有各式各样先进 的组件, 而且更为美观易用.所以一开始使用 AWT 的程序 员很快就转向使用 Swing 了。 但是因为 Swing 是架构在 AWT 之上的, 没有 AWT 就没 有 Swing。所以程序员可以根据自己的习惯选择使用 AWT 或者是 Swing。 但是,最好不要二者 混用——除开显示风格不同不说,还很 可能造成层次 (Z-Order) 错乱
1. Swing容器的层次关系 一般的Swing窗口,实际上包含几个“层次”。
11
12.2.1 Swing组件分类
1. Swing容器的层次关系 一般的Swing窗口,实际上包含几个“层次”,各个层的关

ch05_Java图形用户界面技术

ch05_Java图形用户界面技术

布局管理器:
• • • • 布局管理器用来管理组件放臵在容器中的位臵和大小。 每个容器都有一个布局管理器。 使用布局管理器可以是生成的图形用户界面具有平台无关性。 布局管理器LayoutManager本身是一个接口,通常使用的是实现了这个接口的 类。
构造图形用户界面的过程就像把(组件)鸡蛋按某种摆放方式(布局管理器 )放入(容器)篮筐的过程
22
• 课堂演示-创建用户登录窗口
【案例5-2】创建用户登录窗口 【案例学习目标】进一步掌握JLabel、JButton 的用法,掌握JTextField、JPasswordField的用 法,会应用简单GUI组件构造用户界面 【案例知识要点】JTextField的构造方法、 JTextField常用方法、JPasswordField的构造方 法、JPasswordField的常用方法 【案例完成步骤】 • 编写程序 • 编译并运行程序
3
教学情境--引入新课
工作任务
掌握GUI中常用容器的使用场合和使用方法、掌握GUI组件的特 点和使用方法、能应用GUI组件构造桌面程序界面、能实现GUI事件 处理。
项目展示
4
教师示范与讲解--1
案例分析 任务一:创建程序主窗口
5
• Java GUI概述
图形用户界面(Graphics User Interface,GUI)就是为应 用程序提供一个图形化的界面,方便用户和应用程序实现友 好交互的一个桥梁(与基于命令行的用户界面对比) 图形用户界面借助菜单、工具栏和按钮等标准界面元素和鼠 标操作,帮助用户方便的向计算机系统发出命令、执行操作 ,并将系统运行结果以图形的方式显示给用户。 Java的Java.awt包和Javax.swing包中包含了许多有关图形 界面的类。

Java面向对象程序设计案例教程课件:图形用户界面开发与事件处理

Java面向对象程序设计案例教程课件:图形用户界面开发与事件处理

《Java面向对象程序设计案例教程》
7.2 Swing基础
• Swing组件是Java语言提供的第二代GUI设计工 具包,它以AWT为基础,在AWT内容的基础上 新增或改进了一些GUI组件,使得GUI程序功能 更强大,设计更容易、更方便。
• Swing与AWT有以下不同。
• (1) Swing是完全用Java语言编写的,所以称 Swing组件是轻量级组件,没有本地代码,不依 赖操作系统的支持,比AWT构件具有更强的实 用性。Swing在不同的平台表现一致,并且有能 力提供本地窗口系统不支持的其他特性。
《Java面向对象程序设计案例教程》 • Swing的类层次结构如图所示:
《Java面向对象程序设计案例教程》
• 3. 简单的范例 • 一个简单的Swing GUI应用程序。该程序生成一个窗
口, • 窗口中有一个标签,用于显示输出。 • (1) 程序代码: • 1. import java.awt.* ; • 2. import javax.swing.* ; • 3. public class SwingDemo • 4. { • 5. public static void main(String args[]) • 6. { • 7. JFrame fm = new JFrame("第一个Windows程序") ; • 8. JLabel label = new JLabel("这是第一个GUI程序") ;
• 教材例题7-12 利用组合框显示、选取地名。
• 教材例题8.2 ,例题8.3用不同方法生成JFrame窗口
《Java面向对象程序设计案例教程》
• 7.3.2 面板容器JPanel
• 面板JPanel也是Java中常用到的容器之一,面板是一种透明 的容器,既没有标题,也没有边框,就像一块透明的玻璃。 与JFrame不同,它不能作为最外层的容器单独存在,它首 先必须作为一个构件放置到其他容器中,然后再把它作为容 器,把其他构件放到其中。

Java图形用户界面ppt课件

Java图形用户界面ppt课件
布局管理器主要包括:FlowLayout,BorderLayout, GridLayout,CardLayout,GridBagLayout:
18
1.4 布局管理器-FlowLayout
1. FlowLayout
FlowLayout 是Panel,Applet的缺省布局管理器。其组件的放 置规律是从上到下、从左到右进行放置,如果容器足够宽,第一 个组件先添加到容器中第一行的最左边,后续的组件依次添加到 上一个组件的右边,如果当前行已放置不下该组件,则放置到下 一行的最左边。
11
1.2 组件和容器
容器(Container)也是一个类,实际上是Component的 子类,因此容器本身也是一个组件,具有组件的所有 性质,但是它的主要功能是容纳其它组件和容器。
布局管理器(LayoutManager):每个容器都有一个布 局管理器,当容器需要对某个组件进行定位或判断其 大小尺寸时,就会调用其对应的布局管理器。
Java图形用户界面
Java界面设计的用途
Java 的图形界面工具包,可以用于工具类软 件开发、管理类软件开发、通用客户端开发 、银行客户端软件开发、Eclipse 插件开发等 方向。在许多知名的大型软件中,都能够见 到 Java 的身影,如思维导图软件、Eclipse、 IDEA 开发环境等。
5
如何选择 GUI 工具包
AWT、Swing、SWT是 Java 中的三大 GUI 工具包,其中 Swing 是最灵活、 强大的 GUI 工具包,所以在界面开发 中,首选 Swing ,它可以胜任绝大多 数开发工作。
6
本讲内容
1、AWT事件处理模型 2、布局管理器 3、Swing简介 4、Swing组件和容器
为了使我们生成的图形用户界面具有良好的平台无关 性,Java语言中,提供了布局管理器这个工具来管理 组件在容器中的布局,而不使用直接设置组件位置和 大小的方式。

Java程序设计GUI 图形用户界面PPT 课件,Java学习和备课必备资料

Java程序设计GUI 图形用户界面PPT 课件,Java学习和备课必备资料
JLayeredPane和JRootPane。
7
9.1 Swing 简介
9.1.1 窗体组件 JFrame 9.1.2 对话框组件 JDialog 9.1.3 对话框组件 JOptionPane 9.1.4 中间容器 JPanel 与 JscrollPane 9.1.5 标签组件 JLabel 9.1.6 文本组件 JTextField 与JTextArea
5
✓Swing包在图形界面设计上比AWT更丰富,更美观。Swing 拥有4倍于AWT的用户界面组件。 ✓是AWT包基础上的扩展,在很多情况下在AWT包的部件前 加上字母J即为Swing组件的名称,如:JFrame、JApplet、 JButton等。 ✓Swing组件都是AWT的Container类的直接子类或间接子类 。
17
9.1.3 对话框组件 JOptionPane
使用上面介绍的 JDialog 可以制作消息提示对话框、确定取消对话框等常用的对话框,但相 对来说要花费一些心思才能做出来,而 JOptionPane 组件直接提供了创建上述几种常用的对 话框的方法,大大方便了编程。 1.showMessageDialog()的静态方法弹出消息对话框,显示一条消息并等待用户确定。常用 的重载方法如下。
4、设置窗体的位置。setLocationRelativeTo(Component c):设置 窗体的相对位置。如果参数为 null,则窗体在屏幕中居中对齐。
5、如果希望在关闭窗体后程序可以随之停止,需要调用方法 setDefaultClose Operation()并传入参数 JFrame.EXIT_ON_CLOSE, 这句代码设置了关闭窗体后会停止程序的运行。 此外还有其他 3 个参数,简述如下。
口");。 2)带参的构造方法:用一个字符串作为参数,此字符串将成为窗体的标题。

Java程序设计教案(第五章)

Java程序设计教案(第五章)

教案纸第5章Java的图形用户界面(6学时)【主要讲授内容及时间分配】5.1 图形用户界面概述(25分钟)5.2 AWT中常用类的层次结构(20分钟)5.3 基本组件的使用(45分钟)5.4 布局管理器(45分钟)5.5 事件处理(90分钟)5.6 菜单、绘图类的使用(45分钟)【重点与难点】1、重点:(1)基本组件的使用,包括Label、Button、TextField、TextArea、List、Checkbox和CheckboxGroup的构造方法和常用方法的使用。

(2)布局管理器的使用,包括FlowLayout、GridLayout、BorderLayout。

(3)事件处理。

2、难点:事件处理。

【教学要求】1、可以构造出图形用户界面;2、可以为界面上的组件编写相应的事件处理代码;3、可以构造带有菜单的应用程序;4、可以写小游戏。

【实施方法】课堂讲授,PPT配合public class LabelDemo extends Frame{public LabelDemo(){Label lb1,lb2,lb3;lb1=new Label("LeftLabel");lb2=new Label("CenterLabel",Label.CENTER);lb3=new Label("RightLabel",Label.RIGHT);lb3.setText("改变我的名字");lb3.setAlignment(Label.CENTER);//lb3.setVisible(false);setLayout(new FlowLayout());add(lb1);add(lb2);add(lb3);}public static void main(String args[]){LabelDemo Ld=new LabelDemo();Ld.setVisible(true);Ld.pack();}}public class MyButtons{public static void main(String args[]){Frame f = new Frame();f.setLayout(new FlowLayout());Button button1 = new Button("Ok");Button button2 = new Button("Open");Button button3 = new Button("Close");f.add(button1);f.add(button2);f.add(button3);f.setSize(300,100);f.setVisible(true);}import java.awt.*;public class CheckboxDemo2 extends Frame{public CheckboxDemo2(){setLayout(new FlowLayout());String University[]={"Tsinghua","Pecking","Fudan","Nanki","Tianjin"};Checkbox c[]=new Checkbox[5];Label label=new Label("There are 5 University!");Label label2=new Label("There are 5 University!");Label label3=new Label("There are 5 University!");add(new Label("Please choice the University:"));for(int i=0;i<5;i++){c[i]=new Checkbox(University[i]);add(c[i]);}add(label);add(label2);add(label3);this.pack();show();}public static void main(String args[]){CheckboxDemo2 cbd=new CheckboxDemo2();cbd.setSize(400,500);}import java.awt.*;import java.awt.CheckboxGroup;public class CheckboxGroupDemo2 extends Frame{public CheckboxGroupDemo2(){ super("CheckboxGroupDemo2");setLayout(new FlowLayout());String University[]={"Tsinghua","Pecking","Fudan","Nanki","Tianjin"};Checkbox c[]=new Checkbox[5];Label label=new Label("There are 5 University!");CheckboxGroup d=new CheckboxGroup();add(new Label("Please choice the University:"));for(int i=0;i<5;i++){c[i]=new Checkbox(University[i],d,true);add(c[i]);}//add(d);add(label);show();}public static void main(String args[]){CheckboxGroupDemo2 cbg=new CheckboxGroupDemo2();cbg.setSize(600,700);}import java.awt.*;public class ListTest extends Frame{public ListTest(){super("ListTest");List lt=new List(6,true);setLayout(new FlowLayout());lt.addItem("you");lt.addItem("你");lt.addItem("I");lt.addItem("我");lt.addItem("he");lt.addItem("他");add(lt);}public static void main(String args[]){ListTest lt=new ListTest();lt.setVisible(true);lt.setSize(500,400);}}import java.awt.*;public class TextFieldTest extends Frame{public TextFieldTest(){super("Test TextField");TextField tf=new TextField("&&&&&",20);TextArea ta=new TextArea("this is a new text",6,20);setLayout(new FlowLayout());tf.setEchoChar('*');//tf.setText("9999999");add(tf);add(ta);show();}public static void main(String args[]){TextFieldTest tft=new TextFieldTest();//tft.setVisible(false);tft.setSize(500,400);tft.pack();}}import java.awt.event.*;public class MyFirstFrame1 extends Frame implements ActionListener{ private Button quit=new Button("Quit");public MyFirstFrame1(){super("Test Window");add(quit);pack();show();quit.addActionListener(this);}public void actionPerformed(ActionEvent e){dispose();// System.exit(0);}public static void main(String args[]){MyFirstFrame1 mf=new MyFirstFrame1();}}import java.awt.event.*;public class MyFirstFrame2 extends Frame {private Button quit=new Button("Quit");public MyFirstFrame2(){super("Test Window");add(quit);pack();show();quit.addActionListener(new ButtonHander());}{ new MyFirstFrame2();}}class ButtonHandler implements ActionListener {public void actionPerformed(ActionEvent e){System.exit(0);}}import java.awt.*;import java.awt.event.*;public class ClickMe extends Frame implements ActionListener{ private Button quit =new Button("Quit");private Button click=new Button("Click here");private TextField text=new TextField(10);private boolean secondClick=false;public ClickMe(){super("Click Example");setLayout(new FlowLayout());add(quit);add(click);click.addActionListener(this);quit.addActionListener(this);add(text);pack();show();}public void actionPerformed(ActionEvent e){if(e.getSource()==quit)System.exit(0);else if(e.getSource()==click){if(secondClick)text.setText("not again!");elsetext.setText("Uh,it tickless");secondClick=!secondClick;}}ClickMe myFrame=new ClickMe();}}import java.awt.*;import java.awt.event.*;public class TaskList extends Frame implements ActionListener{ private Button add=new Button("添加");private Button del=new Button("删除");private Button up=new Button("增加优先级");private Button down=new Button("降低优先级");private List list=new List();private TextField taskInput=new TextField();private Label priorityLabel=new Label("改变优先级"); private Label taskLabel=new Label("工作事项:");private class WindowCloser extends WindowAdapter{public void windowClosing(WindowEvent e){System.exit(0);}}public TaskList(){super("工作事项表");setup();add.addActionListener(this);del.addActionListener(this);up.addActionListener(this);down.addActionListener(this);addWindowListener(new WindowCloser());list.addActionListener(this);}public static void main(String args[]){TaskList tl=new TaskList();tl.pack();tl.show();}private void setup(){Panel buttons=new Panel();buttons.setLayout(new FlowLayout());buttons.add(add);buttons.add(del);Panel priorities=new Panel();priorities.setLayout(new FlowLayout());priorities.add(up);priorities.add(priorityLabel);priorities.add(down);Panel input=new Panel();input.setLayout(new BorderLayout());input.add("West",taskLabel);input.add("Center",taskInput);Panel top=new Panel();top.setLayout(new GridLayout(2,1));top.add(input);top.add(priorities);setLayout(new BorderLayout());add("Center",list);add("South",buttons);add("North",top);}public void actionPerformed(ActionEvent e){if((e.getSource()==add)&&(!taskInput.getText().equals(" "))) handleAdd(taskInput.getText().trim());else if((e.getSource()==del)&&(list.getSelectedIndex()>=0)) handleDel(list.getSelectedIndex());else if((e.getSource()==up)&&(list.getSelectedIndex()>0)) handleIncPriority(list.getSelectedIndex());else if ((e.getSource()==down)&&(list.getSelectedIndex()>=0)) handleDecPriority(list.getSelectedIndex());else if(e.getSource()==list)taskInput.setText(list.getSelectedItem());taskInput.requestFocus();}private void handleAdd(String newTask){list.add(newTask);list.select(list.getItemCount()-1);taskInput.setText("");}private void handleDel(int pos){list.remove(pos);list.select(pos);}private void handleIncPriority(int pos){String item=list.getItem(pos);list.remove(pos);list.add(item,pos-1);list.select(pos-1);}private void handleDecPriority(int pos){if(pos<list.getItemCount()-1){String item=list.getItem(pos);list.remove(pos);list.add(item,pos+1);list.select(pos+1);}}}3.事件源是Window(WindowListener和WindowAdapter) import java.awt.*;import java.awt.event.*;public class MultipleEventTester extends Frame implements WindowListener,MouseListener,KeyListener{public MultipleEventTester(){addKeyListener(this);addWindowListener(this);addMouseListener(this);setSize(400,400);show();}//窗口事件处理方法public void windowClosing(WindowEvent we){System.exit(0);}public void windowOpened(WindowEvent we){System.out.println("Window opened");}public void windowClosed(WindowEvent we){ System.out.println("Window closed--"+we);}public void windowIconified(WindowEvent we){ System.out.println("Window iconified---"+we);}public void windowDeiconified(WindowEvent we){ System.out.println("Window deiconnified---"+we); }public void windowActivated(WindowEvent we){ System.out.println("Window activated---"+we);}public void windowDeactivated(WindowEvent we){ System.out.println("Window deactivated---"+we); }//鼠标事件处理方法public void mousePressed(MouseEvent me){ System.out.println("Mouse Pressed***"+me);}public void mouseReleased(MouseEvent me){ System.out.println("Mouse Released***"+me);}public void mouseEntered(MouseEvent me){ System.out.println("Mouse Entered***"+me);}public void mouseExited(MouseEvent me){ System.out.println("Mouse Exited***"+me);}public void mouseClicked(MouseEvent me){ System.out.println("Mouse Clicked***"+me);}//键盘事件处理方法public void keyPressed(KeyEvent ke){System.out.println("key Pressed@@@"+ke);}public void keyReleased(KeyEvent ke){System.out.println("key Released@@@"+ke);}public void keyTyped(KeyEvent ke){System.out.println("key Typed@@@"+ke);}//public static void main(String args[]){MultipleEventTester p=new MultipleEventTester();}}4.事件源是Mouse(MouseListener, MouseMotionListener, MouseAdapter) import java.awt.*;import java.awt.event.*;public class MouseEventDemo extends Frame{public MouseEventDemo(){Button btnMouse=new Button("测试鼠标事件");btnMouse.addMouseListener(new MyMouseListener());btnMouse.addMouseMotionListener(new MyMouseMotionListener());this.setLayout(new FlowLayout());this.add(btnMouse);this.setSize(400,300);this.setVisible(true);}public static void main(String args[]){MouseEventDemo frame=new MouseEventDemo();frame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}class MyMouseListener extends MouseAdapter{public void mouseClicked(MouseEvent e){if(e.isPopupTrigger())System.out.println("你现在单击鼠标右键");if(e.getClickCount()==2)System.out.println(" 你现在双击鼠标");}}class MyMouseMotionListener extends MouseMotionAdapter{public void mouseMoved(MouseEvent e){ System.out.println("鼠标组件区域内移动");}}}import java.awt.*;import java.awt.event.*;public class KeyEventDemo extends Frame{private TextField tf=new TextField(10);public KeyEventDemo(){tf.addKeyListener(new TextfieldListener());add(tf);pack();setVisible(true);}public static void main(String args[]){KeyEventDemo frame=new KeyEventDemo();frame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}class TextfieldListener implements KeyListener{int nKeycode;//键盘按下事件public void keyPressed(KeyEvent e){nKeycode=e.getKeyCode(); //返回键代码System.out.println("KEY_PRESSED:"+e.getKeyText(nKeycode));//返回键代码nKeyCode文字说明}//键盘释放事件public void keyReleased(KeyEvent e){nKeycode=e.getKeyCode();System.out.println("KEY_RELEASED:"+e.getKeyText(nKeycode));}//键盘中的非系统键public void keyTyped(KeyEvent e){nKeycode=e.getKeyCode();System.out.println("KEY_TYPED:"+e.getKeyText(nKeycode));}}}import java.awt.*;import java.awt.event.*;public class Bird extends Thread{private int xdir=2*(1-2*(int)Math.round(Math.random())); private int ydir=2*(1-2*(int)Math.round(Math.random())); private boolean running=false;private Cage cage=null;protected int x,y;Image bird=Toolkit.getDefaultToolkit().getImage("qq.jpg");public Bird(Cage _cage,int _x,int _y){cage =_cage;x=_x;y=_y;start();}public void start(){running=true;super.start();}public void halt(){running=false;}public void run(){while(running){move();try{sleep(120);}catch(InterruptedException e){System.err.println("Thread interrupted");}cage.repaint();}}private void move(){x+=xdir;y+=ydir;if(x>cage.getSize().width){x=cage.getSize().width;xdir*=(-1);}if(x<0) xdir*=(-1);if(y>cage.getSize().height){y=cage.getSize().height;ydir*=(-1);}if(y<0) ydir*=-1;}public void draw(Graphics g){g.drawImage(bird,x,y,30,30,cage);}}import java.awt.*;import java.awt.event.*;public class Cage extends Frame implements ActionListener{ private Button quit=new Button("Quit");private Button start=new Button("Start");private Button stop=new Button("Stop");private Bird birds[]=new Bird[20];Image bird=Toolkit.getDefaultToolkit().getImage("qq.jpg");public Cage(){super("Cage with Birds");setLayout(new FlowLayout());add(quit); quit.addActionListener(this);add(start); start.addActionListener(this);add(stop); stop.addActionListener(this);setSize(400,500);this.setVisible(true);for(int i=0;i<birds.length;i++){int x=(int)(getSize().width*Math.random());int y=(int)(getSize().height*Math.random());birds[i]=new Bird(this,x,y);}}public void actionPerformed(ActionEvent e){if(e.getSource()==stop)for(int i=0;i<birds.length;i++)birds[i].halt();if(e.getSource()==start)for(int i=0;i<birds.length;i++){birds[i].halt();birds[i]=new Bird(this,birds[i].x,birds[i].y);}if(e.getSource()==quit)System.exit(0);}public void paint(Graphics g){for(int i=0;i<birds.length;i++)if(birds[i]!=null)birds[i].draw(g);}public static void main(String args[]){Cage table=new Cage();}}import java.applet.*;import java.awt.*;public class DrawWithCanvas extends Frame{ private Button draw=new Button("Draw"); private DrawCanvas canvas =new DrawCanvas();public DrawWithCanvas(){Panel panel=new Panel();panel.setLayout(new FlowLayout());panel.add(draw);setLayout(new BorderLayout());add("North",panel);add("South",canvas);this.setSize(400,500);pack();show();}public static void main(String args[]){DrawWithCanvas dnc=new DrawWithCanvas(); }}class DrawCanvas extends Canvas{public DrawCanvas(){this.setSize(400,500);}public void paint(Graphics g){for(int i=12;i<getSize().height;i+=12){g.drawString("y location is:"+i,10,i);}}}import java.awt.*;public class DrawNoCanvas extends Frame{ private Button draw=new Button("Draw");public DrawNoCanvas(){Panel panel=new Panel();panel.setLayout(new FlowLayout());panel.add(draw);setLayout(new BorderLayout());add("North",panel);pack();show();}public void paint(Graphics g){for(int i=12;i<getSize().height;i+=12){g.drawString("y location:"+i,10,i);}}public static void main(String args[]){DrawNoCanvas dnc=new DrawNoCanvas();}}。

Java程序设计图形用户界面ppt课件

Java程序设计图形用户界面ppt课件
* GridBagLayout 布局管理器
▪ AWT中最灵活、最复杂的布局管理器,各组件所占空 间可以不相同且灵活规定,参见参考书及API文档;
.
17
第10章 图形用户界面
容器的嵌套使用举例
范例:NestedContainer.java
.
18
第10章 图形用户界面
默认布局管理器
Component Container
些空的方法体。
.
27
第10章 图形用户界面
10.3.4 内部类及匿名类在事件处 理中的应用
在Java事件处理程序中,由于与事件相关的事件 监听器的类经常局限于一个类的内部,所以经常 使用内部类。而且定义的内部类在事件处理中的 使用就实例化一次(在其他地方不会用到该类,所 以不需要类名),所以经常使用匿名类。
.
25
第10章 图形用户界面
10.3.2 事件监听器的注册
注册事件监听器只需要使用组件对象的 addXXXXEvent方法,它可以指明该对象感兴趣的 事件监听器(即实现了某个AWTEventListener子 接口的对象)。这样,当事件源发生了某种类型 的事件时,则触发事先已注册过的监听器中相应 的处理程序。
Window
Frame
Dialog
Panel Applet
BorderLayout
FlowLayout
.
19
第10章 图形用户界面
布局管理器总结(1)
▪ Frame
Frame是一个顶级窗口。 Frame的缺省布局管理器为BorderLayout。
▪ Panel
Panel无法单独显示,必须添加到某个容器中。 Panel的缺省布局管理器为FlowLayout。 当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以

JAVA图形用户界面的设计与实现PPT课件

JAVA图形用户界面的设计与实现PPT课件

Applet Frame Dialog FileDialog
容器
组件名
26
Component 类的常用方法 public void add (PopupMenu popup):在组件上加上一个弹出菜单。 public Color getBackground ( ): 获得组件的背景色。 public Font getFont ( ):获得组件使用的字体。 public Color getForeground ( ):获得组件的前景色。 public Graphics getGraphics( ):获得绘图用的 Graphics 对象。 public void repaint ( int x, int y, int width, int height ):以指点的坐标点
只能用做容器组件加入其他容器。 3)通常用于层次化界面组件管理。
P260:例 7-20 TestPanel . java
❖ 例子:ch7\src\MyFrame.java
6
组件
组件:图形用户界面的最小单元,用来完成与用户的交互;
用户界面标准化的结果,例如:标签、文本框、按钮、菜单 等。
使用组件的步骤: 1)创建组件类的对象,指定其属性; 2)使用某种布局策略; 3)将组件对象注册给对应的事件监听器,覆盖事件处理方
Java 支持的图像文件格式包括bmp,gif,jpeg 等。
16
二、绘制图像:
drawImage( Image img, int x, int y, ImageObserver observer ) 有4个 参数:图像的 Image 对象,显示图像的左 上角 x、y 坐标,显示图像的容器对象。如:
来接收和处理这种事件。 ❖ 如果一个事件源注册了对应的监听者,那么
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档