图形用户界面(一)

文章目录

  • 图形用户界面(一)
    • 1.绘图
      • 1.1 图形环境和图形对象
      • 1.2 颜色和字体
      • 1.3 使用Graphics类绘图
      • 1.4 使用Graphics2D类绘图
    • 2.Swing基础
      • 2.1 JFC与Swing
      • 2.2 Swing与AWT
      • 2.3 在Applet和Application中应用Swing

1.绘图

1.1 图形环境和图形对象

坐标

  • GUI组件的左上角坐标默认为(0,0)
  • 从左上角到右下角,水平坐标x和垂直坐标y增加。
  • 坐标的单位是象素

Graphics对象

  • 专门管理图形环境。Graphics类是一个抽象类
  • 抽象类Graphics提供了一个与平台无关的绘图接口
  • 各平台上实现的Java系统将创建Graphics类的一个子类,来实现绘图功能,但是这个子类对程序员是透明的
  • 在执行paint方法时,系统会传递一个指向特定平台的Graphics子类的图形对象g

1.2 颜色和字体

  • Java中有关颜色的类是Color类,它在java.awt包中,声明了用于操作颜色的方法和常量

  • Font类——有关字体控制,在java.awt包中

  • Graphics类
    其对象可以绘制文本、线条、矩形、多边形、椭圆、弧等多种图形



1.3 使用Graphics类绘图

用各种颜色绘制文字及各种图形

import java.awt.*;
import javax.swing.*;import org.omg.CORBA.portable.ApplicationException;public class GraphicsTester extends JFrame{public GraphicsTester (){ super( "演示字体、颜色、绘图" ); setVisible( true ); //显示窗口setSize( 480, 250 ); //设置窗口大小 }public void paint( Graphics g ) {super.paint( g ); g.setFont( new Font( "SansSerif", Font.BOLD, 12 ) ); g.setColor(Color.blue); //设置颜色g.drawString("字体ScanSerif,粗体,12号,蓝色",20,50);g.setFont( new Font( "Serif", Font.ITALIC, 14 ) );g.setColor(new Color(255,0,0));g.drawString( " 字体Serif,斜体,14号,红色", 250, 50 );g.drawLine(20,60,460,60);                      //绘制直线g.setColor(Color.green);g.drawRect(20,70,100,50);                     //绘制空心矩形g.fillRect(130,70,100,50);                    //绘制实心矩形g.setColor(Color.yellow);g.drawRoundRect(240,70,100,50,50,50); //绘制空心圆角矩形g.fillRoundRect(350,70,100,50,50,50);      //绘制实心圆角矩形g.setColor(Color.cyan);g.draw3DRect(20,130,100,50,true);   //绘制突起效果空心矩形g.fill3DRect(130,130,100,50,false);    //绘制凹陷效果实心矩形g.setColor(Color.pink);g.drawOval(240,130,100,50);                //绘制空心椭圆g.fillOval(350,130,100,50);                    //绘制实心椭圆g.setColor(new Color(0,120,20));g.drawArc(20,190,100,50,0,90);            //绘制一段圆弧 g.fillArc(130,190,100,50,0,90);              //绘制扇形g.setColor(Color.black);int xValues[]={250,280,290,300,330,310,320,290,260,270};int yValues[]={210,210,190,210,210,220,230,220,230,220};g.drawPolygon(xValues,yValues,10);       //绘制空心多边形int xValues2[]={360,390,400,410,440,420,430,400,370,380};g.fillPolygon(xValues2,yValues,10);          //绘制实心多边形}public static void main(String[] args) {// TODO Auto-generated method stubGraphicsTester application = new GraphicsTester();application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗口退出程序}
}

1.4 使用Graphics2D类绘图

Java2D API

  • 提供了高级的二维图形功能
  • 分布在java.awt、java.awt.image、java.awt.color、java.awt.font、java.awt.geom、java.awt.print和java.awt.image.renderable包中
  • 它能轻松使你完成以下功能:
    • 绘制任何宽度的直线
    • 用渐变颜色和纹理来填充图形
    • 平移、旋转、伸缩、切变二维图形,对图像进行模糊、锐化等操作
    • 构建重叠的文本和图形

Graphics2D类

  • 是Graphics类的抽象子类

  • 要使用Java2D API,就必须建立该类的对象

  • 事实上,传递给paint方法的对象是Graphics2D的一个子类实例,被向上转型为Graphics类的实例。要访问Graphics2D功能,必须将传递给paint方法的Graphics引用强制转换为Graphics2D引用:

    Graphics2D g2d=(Graphics2D)g
    

使用Graphics2D类绘图实例:使用Java2D使文字出现渐变色效果

import java.awt.*;
import javax.swing.*;
public class Graphics2DTester extends JApplet{public void paint(Graphics g) {super.paint(g); Graphics2D g2d=(Graphics2D)g; g2d.setPaint(new GradientPaint(0,0,Color.red,180,45,Color.yellow));                                    g2d.drawString("This is a Java Applet!",25,25); }
}

2.Swing基础

2.1 JFC与Swing

JFC

  • Java Foundation Classes(Java基础类)的缩写
  • 是关于GUI 组件和服务的完整集合
  • 作为J2SE 的一个有机部分,主要包含5 个部分
    • AWT
    • Java2D
    • Accessibility
    • Drag & Drop
    • Swing

Swing

  • JFC 的一部分
  • 提供按钮、窗口、表格等所有的组件
  • 纯Java组件(完全用Java写的)

2.2 Swing与AWT

早期版本的AWT组件(Abstract Window Toolkit)

  • 在java.awt包里,包括Button、Checkbox、Scrollbar等,都是Component类的子类
  • 大部分含有native code,所以随操作系统平台的不同会显示出不同的样子,而不能进行更改,是重量级组件(heavyweight components)
  • 没有弹性、缺乏效率

较新的Swing组件

  • 其名称都是在原来AWT组件名称前加上J,例如JButton、JCheckBox、JScrollbar等,都是JComponent类的子类
  • Java1.2推出,架构在 AWT 之上,是AWT的扩展而不是取代
  • 完全是由java语言编写的,其外观和功能不依赖于任何由宿主平台的窗口系统所提供的代码,是轻量级组件(lightweight components)
  • 可提供更丰富的视觉感受,被越来越多地使用

2.3 在Applet和Application中应用Swing

  • 在Applet中应用Swing,就是要将Swing组件加载到Applet容器上(通常是JApplet),这通常在init方法中完成
  • 在Application中应用Swing,也是要将Swing组件加载到这个Application的顶层容器(通常是JFrame)中

图形界面设计的一般步骤

  • 1、选择容器。
  • 2、确定布局。
  • 3、向容器中添加组件。
  • 4、进行事件处理。

在Applet和Application中应用Swing实例:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingApplet extends JApplet{public void init() {Container contentPane=getContentPane();contentPane.setLayout(new GridLayout(2,1));JButton button=new JButton("Click me");final JLabel label=new JLabel();contentPane.add(button);contentPane.add(label);button.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent event) {String information=JOptionPane.showInputDialog("请输入一串字符");label.setText(information);}  }  );//创建监听器语句结束}//init方法结束
}


【Java程序设计】图形用户界面(一)相关推荐

  1. Java程序设计 图形用户界面 【十二】下拉列表JComboBox

    Java程序设计 图形用户界面 [十二]下拉列表JComboBox 下拉列表JComboBox JList是以列表框的形式进行显示的 有列表又可以自己输入数据这种组件就称为下拉列表框 JComboBo ...

  2. Java程序设计 图形用户界面 【十三】菜单

    Java程序设计 图形用户界面 [十三]菜单 菜单组件 JMenu与JMenuBar 菜单 JMenuBar组件的功能是用来摆放JMenu组件,当建立完多个JMenu组件之后,需要通过JMenuBar ...

  3. Java程序设计 图形用户界面 小巫版简易计算器

    /** 作者:wwj 时间:2012/4/13 功能:实现一个计算器应用程序实验要求:编写一个模拟计算器的应用程序,使用面板和网格布局, 添加一个文本框,10个数字按钮(0~9),4个加减乘除按钮, ...

  4. Java语言程序设计----- 图形用户界面设计

    Java语言程序设计----- 图形用户界面设计 1.实验目的 (1)掌握Java Swing组件的使用方法. (2)理解委托事件处理模型. (3)设计具有图形用户界面的.能够响应事件的Java应用程 ...

  5. 用java编写关于母亲节的代码,java编纂图形用户界面程序-实例2:母亲节快乐!o~ 努力...

    java编写图形用户界面程序--实例2:母亲节快乐!^_^o~ 努力! 最近时间越来越少了,又要准备省赛,又要备考四级! 作为一个地地道道的"农村娃"."计算机渣&quo ...

  6. Java Swing 图形用户界面——常见组件

    一直在用C\C++,还没开始认真学Java,但这几天课堂上的Java Swing 图形用户界面引起了我的兴趣.正好前段时间在玩Qt的图形化界面,发现两者有很多相似之处,学起来也容易很多.(但实际上Ja ...

  7. Java | GUI 图形用户界面

    一.什么是GUI GUI 全称 Graphical User Interface 图形用户界面,指采用图形方式显示的计算机操作用户界面. 软件以图形界面形式运行时,用户可借助于菜单.按钮.标签等组件和 ...

  8. JAVA GUI(图形用户界面)

    1.GUI概述 目前,我们编写的程序都是基于控制台的程序GUI(Graphical User Interface)即图形用户界面,它能够使应用程序看上去更加友好 2.Swing概念 位于javax.s ...

  9. 如何使用Java实现图形用户界面(GUI)?

    随着计算机技术的不断发展,图形用户界面(GUI)成为现代软件开发的一个重要方面.通过使用GUI,开发人员可以创建具有可视化界面的应用程序,以提供更好的用户体验.在本文中,我们将介绍如何使用Java实现 ...

  10. java实验图形用户界面应用2_Java图形用户界面实验报告.doc

    Java图形用户界面实验报告概要 西 安 图形用户界面 专业名称: 计算机科学与技术 班 级: 计科1405班 学生姓名: 高宏伟 学 号: 指导教师: 刘霞林 实验日期: 2016.11.24 一. ...

最新文章

  1. Navicat连接数据库成功,新建查询时提示错误“Cannot create file ……”
  2. 干货丨一文介绍机器学习中基本的数学符号
  3. 本周ASP.NET英文技术文章推荐[06/03 - 06/09]
  4. 4个轮子+1部手机=长城眼里的智能汽车现状
  5. MySQL数据类型合集
  6. OpenKruise 如何实现 K8s 社区首个规模化镜像预热能力
  7. python测试框架nose研究_详解Python nose单元测试框架的安装与使用
  8. Java设计模式、框架、架构、平台之间的关系
  9. ZZULIOJ 1053:正弦函数
  10. erp系统是什么系统软件
  11. JAVA格式化输出浮点数:空格,位数
  12. 三种需求文档(BRD、MRD、PRD)
  13. 向Spring大佬低头——大量源码流出解析
  14. 路由器忘记密码的解决办法
  15. 无私数据分享:Chartboost的使用
  16. Python爬取拉钩招聘网,用数据告诉你这类程序员最赚钱
  17. 「圆桌」无人驾驶何时来?| 甲子引力
  18. chrome 导入html书签,怎么把谷歌浏览器书签导出来?怎么将书签导入到别的浏览器中?...
  19. 高通推出骁龙888处理器,移动办公使用电子邮箱更便捷!
  20. 网间进程的标识和端口分配机制

热门文章

  1. 基于深度学习的一款五子棋小游戏
  2. 决策树中的过拟合问题
  3. PDF转换为其他格式的方法
  4. 服务器主板阵列创建!创建磁盘阵列RAID0、RAID1图文方法
  5. nginx实现网站url带参跳转 POST请求GET请求跳转
  6. 蚂蚁S9矿卡ddr型号确认方法
  7. java性能检测工具_老李分享:JAVA性能监控工具
  8. 三轴合并_用两套乐高60107合并成铰接式云梯消防车,看看和60112有什么区别
  9. k8s springboot 文件_用Kubernetes部署Springboot或Nginx,也就一个文件的事
  10. linux下备份msyql数据库