这个学期主要放在ACM比赛上去了,比赛结束了。不知不觉就15周了,这周就要java考试了,复习一下java吧。java的学习的目的还是让我们学以致用,让我们可以运用java开发一下小项目。而不是单单应付考试;今天复习了一下。图形用户接口,对监听的实现又加深了一些,java的布局控制,gui动画;

对书上代码的实现:

这个程序的功能就是按下button,会改变颜色,后面改变颜色的那个类是渐变的所以效果不明显;

主要是熟悉一下,布局管理和监听的写法,还有paintComponent类的一些使用方法;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;public class GUI implements ActionListener {JFrame jf;public static void main(String[] args) {GUI gui=new GUI();gui.go();}public void go() {jf=new JFrame();JButton jb=new JButton("change color");jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗体关闭jb.addActionListener(this);MyDrawPanel drawpanel =new MyDrawPanel();jf.add(BorderLayout.SOUTH,jb); //对组件进行布局管理jf.add(BorderLayout.CENTER,drawpanel);jf.setSize(500, 500);jf.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent arg0) {  //事件监听的一种写法,外部类jf.repaint();}
}public class MyDrawPanel extends JPanel{public void paintComponent(Graphics g) //绘图{Graphics2D g2d=(Graphics2D) g;GradientPaint gradient=new GradientPaint(70,70,Color.blue,150,150,Color.orange);//渐层的颜色 也能够不这么写,效果更明显g2d.setPaint(gradient);g2d.fillOval(70,70,100,100);}
}

实现两个button的监听:

基本的功能是实现两个不同的button的监听,分别有不同的功能

后面的绘图和前面的程序一样。

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;public class TwoButtons {JFrame jf ;JLabel jl ;//标签public static void main(String[] args) {TwoButtons gui =new TwoButtons();gui.go();}public void go() {jf=new JFrame();jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JButton labelbutton=new JButton("change Label");labelbutton.addActionListener(new ActionListener() {//这里的监听採用的是匿名内部类,也还能够使用内部类@Overridepublic void actionPerformed(ActionEvent arg0) {jl.setText("ouch!");}});JButton colorbutton=new JButton("change circle");colorbutton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {jf.repaint();}});jl=new JLabel("I'am a label");MyDrawPanel drawpanel=new MyDrawPanel();jf.add(BorderLayout.SOUTH,colorbutton);jf.add(BorderLayout.CENTER,drawpanel);jf.add(BorderLayout.EAST,labelbutton);jf.add(BorderLayout.WEST,jl);jf.setSize(500, 500);jf.setVisible(true);}}
public class MyDrawPanel extends JPanel{public void paintComponent(Graphics g){Graphics2D g2d=(Graphics2D) g;GradientPaint gradient=new GradientPaint(70,70,Color.blue,150,150,Color.orange);g2d.setPaint(gradient);g2d.fillOval(70,70,100,100);}
}

大体的界面就是这样;

动画的效果。用到一些线程的初步知识。

import java.awt.Color;
import java.awt.Graphics;import javax.swing.JFrame;
import javax.swing.JPanel;public class Simpleanimation {int x=80;int y=80;Mydrawpanel draw;public static void main(String[] args) {Simpleanimation simpleanimation=new Simpleanimation();simpleanimation.go();}public void go() {JFrame jf=new JFrame();jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);draw=new Mydrawpanel();jf.add(draw);jf.setSize(500, 500);jf.setVisible(true);Thread thread1=new Thread(new Mythread());thread1.start();/*for(int i=0;i<300;i++){x++;y++;draw.repaint();try {Thread.sleep(50);} catch (Exception e) {}}*/}class Mythread implements Runnable{//这里就用线程写了一下。初步的知识@Overridepublic void run() {for(int i=0;i<300;i++){x++;y++;draw.repaint();try {Thread.sleep(50);} catch (Exception e) {}}}}class Mydrawpanel extends JPanel {public void paintComponent (Graphics g){g.setColor(Color.green);g.fillOval(x,y,x,y);//这个x和y改变成其它值就会用不同的效果;}}}

这里这个图像在变化的时候还会留下痕迹;

我们怎么消去这些痕迹呢?

class Mydrawpanel extends JPanel {public void paintComponent (Graphics g){g.setColor(Color.white);g.fillRect(0, 0, this.getWidth(), this.getHeight());g.setColor(Color.green);g.fillOval(x,y,x,y);}}

加入一段代码,在每次画上新的圆圈之前把整个面板用原来的背景底色填满;

这样我们看到的就是动绘图了,把中间的痕迹消去了。

这个的基本效果;

复习的这些都是一些要掌握的基础知识,从基础做起。



转载于:https://www.cnblogs.com/liguangsunls/p/6888988.html

java学习笔记(二)图形用户接口相关推荐

  1. Java学习笔记二:数据类型

    Java学习笔记二:数据类型 1. 整型:没有小数部分,允许为负数,Java整型分4种:int short long byte 1.1 Int最为常用,一个Int类型变量在内存中占用4个字节,取值范围 ...

  2. Java学习笔记(四)——接口

    Java学习笔记(四)--接口 1.格式 2.接口的特点 3.接口举例 1.格式 接口:初期理解,可以认为是一个特殊的抽象类.当抽象类中的方法都是抽象的,那么该类 可以通过接口的方式来表示. clas ...

  3. JAVA学习笔记之抽象类与接口2020-3-22

    抽象类 先了解一下抽象类的概念. 一个完整的方法,是有: 1.方法声明 2.方法体 public void show(){方法体; } 而如果只包含方法声明,没有方法体,那么就称之为:抽象方法.(ab ...

  4. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  5. JAVA学习笔记(6)——接口与多态

    一.接口 1.   –与抽象类一样都是定义多个类的共同属性 –使抽象的概念更深入了一层,是一个"纯"抽象类,它只提供一种形式,并不提供实现 –允许创建者规定方法的基本形式:方法名. ...

  6. JAVA学习笔记(二十)- 集合 List

    ArrayList 集合 /** ArrayList,实现List接口* 声明数组时必须指定数组中元素的类型,可以是基本数据类型,也可以是引用数据类型* 声明集合时可以不指定其元素的类型,元素类型默认 ...

  7. JAVA 学习笔记 (二)

    Java 对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为.例如,一条狗是一 ...

  8. Java学习笔记二十:Java中的内部类

    Java中的内部类 一:什么是内部类: (1).什么是内部类呢? 内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. (2).那为什么要将一个类定 ...

  9. java学习笔记(二) ----基本数据类型应用

    &和&&和区别,&&如果等式一边不成立就短路,&不管&左边的成不成立,右边等式都执行 &&短路与, ||短路或 | 或,表达式两 ...

  10. Java学习笔记二十二:Java的方法重写

    Java的方法重写 一:什么是方法的重写: 如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法. 语法规则 返回值类型.方法名.参数类型及个数都要与父类继承的 ...

最新文章

  1. 移动互联网用户的心理需求【转载】
  2. axios使用post请求的时候后台接收不到参数
  3. Jetson nano刷好机之后需要做的准备工作
  4. c++string类默认函数实现
  5. 订阅号助手App发布 手机也能管理公众号了
  6. php无刷新实现页面更新,使用laravel和ajax实现整个页面无刷新的操作方法
  7. VTK:图片之ImageHybridMedian2D
  8. VTK:IO之ReadDICOMSeries
  9. Loadrunner学习笔记(三)
  10. python实战===如何优雅的打飞机
  11. PLSQL没有链接为解决办法
  12. python selenium firefox使用
  13. mysql 5.6 同步_mysql 5.6 半同步主从安装
  14. 【C++】STL-函数对象(仿函数)
  15. 关于Navicat Premium 12注册机被windows病毒防护自动删除的问题解决
  16. [Spark调优]--TaskSetManager的有效Locality Levels
  17. html设计个人网页导航
  18. SQLAlchemy批量操作数据
  19. java上传视频文件到服务器,java视频上传到远程服务器
  20. Python 实现 淘宝秒杀 聚划算 自己主动提醒 源代码

热门文章

  1. Hibernate错误处理:Unable to get the default Bean Va...
  2. Hangman Judge UVA - 489
  3. SpringMVC 工作流程
  4. redis shell命令
  5. Python成员运算符
  6. Jsoup解析网页html
  7. jquery动态生成的元素添加事件的方法
  8. POJ1185炮兵阵地(状态压缩 + dp)
  9. 当我在linux图形界面终端输入startx,我在干什么
  10. qstore 的 chunk重构小记