欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    java图形界面编程.ppt

    • 资源ID:70013706       资源大小:611.50KB        全文页数:40页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    java图形界面编程.ppt

    第10课 用户界面设计参见Java语言与面向对象程序设计的第7章,第8章8.3节AWT容器容器n容器Container能够用来存放别的组件。n有两种类型的容器:Window和Panel。Frame容器容器nWindow是能独立存在的容器,它有一个子类Frame。nFrame有一个构造方法Frame(String title)n你可以通过add()方法,在Frame中加入其他的组件。nFrame被创建后,它是不可见的.n参见FrameShower.java FrameShower.javapackage gui;import java.awt.*;public class FrameShower public static void main(String args)Frame f=new Frame(hello);f.add(new Button(Press Me);f.setSize(100,100);f.setVisible(true);Panel容器Panel只能存在于其他的容器(Window或其子类)中.n通过Panel的默认构造方法Panel()可以创建一个Panel。n参见MyFrame.javaMyFrame.javapackage gui;import java.awt.*;public class MyFrame extends Frame Panel panel=new Panel();Button button=new Button(press me);public MyFrame(String title)super(title);panel.add(button);panel.setBackground(Color.yellow);add(panel);setBackground(Color.blue);setSize(500,500);setVisible(true);public static void main(String args)MyFrame f=new MyFrame(hello);布局管理器一.取消布局管理器setLayout(null)二.默认布局管理器Window,Frame和Dialog的默认布局管理器是BorderLayoutPanel和Applet的默认布局管理器是FlowLayout。取消布局管理器public MyFrame(String title)super(title);panel.setLayout(null);panel.setSize(200,200);panel.setLocation(50,50);button.setSize(80,50);button.setLocation(80,80);panel.add(button);panel.setBackground(Color.yellow);setLayout(null);add(panel);setBackground(Color.blue);setSize(500,500);setVisible(true);yx布局管理器n布局管理器分为5种:n-FlowLayout 流式布局管理器n-BorderLayout边界布局管理器n-GridLayout网格布局管理器n-CardLayout卡片布局管理器n-GridBagLayout网格包布局管理器布局管理器练习运行 MyFlow.java运行 BorderLayoutTester.java运行GridEx.java运行 CardLayoutTester.java运行GridBagEx1.java改变容器中组件的布局,观看显示效果FlowLayoutpublic class MyFlow private Frame f;private Button button1,button2,button3;public static void main(String args)MyFlow mflow=new MyFlow();mflow.go();public void go()f=new Frame(Flow Layout);f.setLayout(new FlowLayout();button1=new Button(Ok);button2=new Button(Open);button3=new Button(Close);f.add(button1);f.add(button2);f.add(button3);f.setSize(600,600);f.setVisible(true);BorderLayoutpublic class BorderLayoutTester private Frame f;private Button bn,bs,bw,be,bc;public static void main(String args)BorderLayoutTester guiWindow2=new BorderLayoutTester();guiWindow2.go();public void go()f=new Frame(Border Layout);/f.setLayout(new BorderLayout();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);f.add(be,BorderLayout.EAST);f.add(bw,BorderLayout.WEST);f.add(bc,BorderLayout.CENTER);f.add(new Button(hello);f.pack();f.setVisible(true);GridLayoutpublic class GridEx private Frame f;private Button b1,b2,b3,b4,b5,b6;public static void main(String args)GridEx grid=new GridEx();grid.go();public void go()f=new Frame(Grid example);f.setLayout(new GridLayout(3,2);b1=new Button(1);b2=new Button(2);b3=new Button(3);b4=new Button(4);b5=new Button(5);b6=new Button(6);f.add(b1);f.add(b2);f.add(b3);f.add(b4);f.add(b5);f.add(b6);f.setSize(500,500);f.setVisible(true);CardLayoutpublic class CardLayoutTester public static void main(String args)Panel p1,p2,p3;Frame f=new Frame(Card Test);CardLayout myCard=new CardLayout();f.setLayout(myCard);p1=new Panel();p2=new Panel();p3=new Panel();f.setBackground(Color.white);p1.setBackground(Color.black);p2.setBackground(Color.blue);p3.setBackground(Color.red);f.add(p1,First);f.add(p2,Second);f.add(p3,Third);myCard.show(f,Second);f.setSize(200,200);f.setVisible(true);创建面板及复杂布局创建面板及复杂布局 参见 ExGui3.java创建面板及复杂布局创建面板及复杂布局 参见ExGui4.java事件处理n每一个可以触发事件的组件被当作事件源.n每一种事件都对应专门的监听者。n监听者用来接收和处理这种事件。n一个事件源可以触发多种事件,如果它注册了某种事件对应的监听者,那么这种事件就会被接收和处理。这种模式被称为 委托模型。事件处理的软件实现n事件类(XXXEvent)n事件监听接口(XXXListener)n组件的注册监听接口方法(addXXXListener()方法)事件处理1.用内部类实现监听接口参看EventTester1.java2.将容器类实现监听接口参看EventTester2.java3.定义专门的外部类实现监听接口参看EventTester3.java4.采用事件适配器参看EventTester4.java5.一个组件注册多个监听者参看EventTester5.java用内部类实现监听接口public class EventTester1 extends Frame static int count=1;public EventTester1(String title)super(title);public static void main(String args)EventTester1 f=new EventTester1(hello);f.setLayout(new FlowLayout();final Button b=new Button(1);b.addActionListener(new ActionListener()/declare an Inner class public void actionPerformed(ActionEvent evt)b.setLabel(new Integer(+count).toString(););f.add(b);f.setSize(100,100);f.setBackground(Color.blue);f.setVisible(true);将容器类实现监听接口public class EventTester2 extends Frame implements ActionListener int count=1;Button b;public EventTester2(String title)super(title);setLayout(new FlowLayout();b=new Button(1);b.addActionListener(this);/Sample itself is an ActionListener add(b);setSize(100,100);setBackground(Color.blue);setVisible(true);public static void main(String args)EventTester2 f=new EventTester2(hello);public void actionPerformed(ActionEvent evt)b.setLabel(new Integer(+count).toString();定义专门的外部类实现监听接口public class EventTester3 extends Frame Button b;Button b1;public EventTester3(String title)super(title);setLayout(new FlowLayout();b=new Button(1);b.addActionListener(new MyListener(1);add(b);b1=new Button(not registred);add(b1);setSize(100,100);setBackground(Color.blue);setVisible(true);public static void main(String args)EventTester3 f=new EventTester3(hello);class MyListener implements ActionListener int count;public MyListener(int count)this.count=count;public void actionPerformed(ActionEvent evt)Button b=(Button)evt.getSource();b.setLabel(new Integer(+count).toString();采用事件适配器public class EventTester4 extends Frame Button b;public EventTester4(String title)super(title);setLayout(new FlowLayout();b=new Button(1);b.addMouseListener(new MyMouseListener(1);add(b);setSize(100,100);setBackground(Color.blue);setVisible(true);public static void main(String args)EventTester4 f=new EventTester4(hello);class MyMouseListener extends MouseAdapter int count;public MyMouseListener(int count)this.count=count;public void mousePressed(MouseEvent evt)Button b=(Button)evt.getSource();/get event source b.setLabel(new Integer(+count).toString();mousePressed(MouseEvent)mouseReleased(MouseEvent)mouseEntered(MouseEvent)mouseExited(MouseEvent)mouseClicked(MouseEvent)一个组件注册多个监听者public class EventTester5 extends Frame Button b;public EventTester5(String title)super(title);setLayout(new FlowLayout();b=new Button(Mouse 1);b.addMouseListener(new MyMouseListener1(1);/register MyMouseListener b.addActionListener(new MyActionListener(1);/register MyActionListener add(b);setSize(300,300);setBackground(Color.blue);setVisible(true);public static void main(String args)EventTester5 f=new EventTester5(hello);事件类class MyListener implements ActionListener int count;public MyListener(int count)this.count=count;public void actionPerformed(ActionEvent evt)Button b=(Button)evt.getSource();b.setLabel(new Integer(+count).toString();事件监听接口组件注册监听接口n组件可以通过addXXXListener方法(XXX表示某种事件)注册监听者。n子类组件继承父类的所有注册监听者的方法。事件处理练习:为计算器加上事件处理,使它能进行简单的计算ExGui4.java-Calculater.java AWT绘图绘图n在Component类中提供了三个和绘图有关的方法:npaint(Graphics g):绘制组件的外观。nupdate(Graphics g):调用paint()方法,刷新组件的外观。nrepaint():调用update()方法,刷新组件的外观。nGraphics类提供了绘制各种图形的方法ndrawLine(int x1,int y1,int x2,int y2):画一条直线ndrawString(String string,int left,int bottom):写一个字符串ndrawImage(Image image,int left,int top,ImageObserver observer):画一个图片ndrawRect(int left,int top,int width,int height):画一个矩形ndrawOval(int x,int y,int width,int height):画一个椭圆nfillRect(int left,int top,int width,int height):填充一个矩形nfillOval(int x,int y,int width,int height)/填充一个椭圆 AWT绘图绘图repaint()调用update(),update()调用paint()一个绘图例子(SampleDrawer.java)按下Change Color按钮SampleDrawer.javapublic class SampleDrawer extends Frame implements ActionListener Color color=Color.red;Button b;public SampleDrawer(String title)super(title);setLayout(new FlowLayout();b=new Button(Change Color);b.addActionListener(this);add(b);setSize(300,300);setVisible(true);public void paint(Graphics g)g.setColor(color);g.fillRect(100,100,100,100);g.setColor(Color.black);g.fillRect(0,100,100,100);g.fillRect(200,100,100,100);g.fillRect(0,200,300,100);public static void main(String args)SampleDrawer f=new SampleDrawer(hello);public void actionPerformed(ActionEvent evt)if(color=Color.red)color=Color.green;else color=Color.red;repaint();/call repaint()method 随机画椭圆OvalDrawer.javaOvalDrawer类 的 paint()方 法 负 责 画 一 个 椭 圆,OvalDrawer类还实现了Runnable接口,在run()方法中,每隔400毫秒就会随机的设置椭圆的起始坐标(x,y)、椭圆的宽width和高height,然后调用OvalDrawer的repaint()方法刷新界面。public void run()while(true)x=(int)(Math.random()*300);y=(int)(Math.random()*300);width=(int)(Math.random()*100);height=(int)(Math.random()*100);color=colors(int)(Math.random()*(colors.length-1);repaint();tryThread.sleep(400);catch(InterruptedException e)throw new RuntimeException(e);Swing组件n在java.awt包中,提供了各种具体的组件,如窗体Frame、面板Panel、按钮Button、文本框TextField和文本区域TextArea等。AWT组件的优点是简单、稳定,兼容于任何一个JDK版本,缺点是依赖于本地操作系统的GUI,缺乏平台独立性。n为了使用Java创建的图形界面也能够跨平台,即在不同操作系统中保持相同的外观,从JDK1.2版本开始引入了Swing组件,这些Swing组件位于javax.swing包中,成为JDK基础类库的一部分。nSwing组件是用纯Java语言编写而成的,不依赖于本地操作系统的GUI,Swing组件可以跨平台运行。独立于本地平台的Swing组件被称为轻量级组件,而依赖于本地平台的AWT组件被称为重量级组件。JComponentn多数Swing组件的父类为javax.swing.JComponentJFramenJFrame与Frame的最大区别在于前者不能直接通过add()方法加入组件,也不能直接通过setLayout()方法设置布局。/以下代码非法JFrame jFrame=new JFrame(Hello);jFrame.setLayout(new GridLayout(2,1);jFrame.add(jLabel);jFrame.add(jButton);JFramen每个JFrame都有一个与之关联的内容面板(contentPane),只 能 针 对 这 个contentPane设置布局,以及加入组件:JFrame jFrame=new JFrame(Hello);/获得与JFrame关联的contentPane,contentPane默认的布局管理器为BorderLayoutContainer contentPane=jFrame.getContentPane();contentPane.setLayout(new GridLayout(2,1);contentPane.add(jLabel);contentPane.add(jButton);JFramenJFrame的setDefaultCloseOperation(int operation)方法用来决定如何响应用户关闭窗体的操作,参数operation有以下可选值:nJFrame.DO_NOTHING_ON_CLOSE:什么也不做。nJFrame.HIDE_ON_CLOSE:隐藏窗体,这是JFrame的默认选项。nJFrame.EXIT_ON_CLOSE:结束程序。frame.addWindowListener(new MyWindowListener();class MyWindowListener extends WindowAdapter public void windowClosing(WindowEvent evt)System.exit(0);SimpleSwingDemo.javaJButtonJLabelSimpleSwingDemo.javapublic class SimpleSwingDemo extends Jframe implements ActionListener private JLabel jLabel;private JButton jButton;private String labelPrefix=Number of button clicks:;private int numClicks=0;public SimpleSwingDemo(String title)super(title);jLabel=new JLabel(labelPrefix+0);jButton=new JButton(I am a Swing button!);/创建一个快捷键:用户按下Alt-i键等价于点击该Button jButton.setMnemonic(i);/设置鼠标移动到该Button时的提示信息 jButton.setToolTipText(Press me);jButton.addActionListener(this);Container contentPane=getContentPane();contentPane.setLayout(new GridLayout(2,1);contentPane.add(jLabel);contentPane.add(jButton);pack();setVisible(true);/当用户选择JFrame的关闭图标,将结束程序 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public void actionPerformed(ActionEvent e)numClicks+;jLabel.setText(labelPrefix+numClicks);public static void main(String args)new SimpleSwingDemo(Hello);

    注意事项

    本文(java图形界面编程.ppt)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开