详细内容

本篇文章的主要内容是关于在Java里用paint方法画图,具有一定参考价值,感兴趣的朋友可以了解一下,希望能对你有所帮助。

java使用paint方法画图

需要继承JFrame类来画窗口 => public class Game extends JFrame {}

setTitle(String s); //设置窗口标题

setLocation(int x, int y); //设置窗口位置

setSize(int width, int height); //设置窗口宽和高

setVisible(true); //设置窗口可见,默认为flase,这个方法放在setLocation()和setSize后面较好,我放在前面窗口为黑色,本来默认为白色的

paint方法画图

定义后自动调用public class paint(Graphics g) {

Color c = g.getColor(); //记录原来的颜色

Font f = g.getFont(); //记录原来的字体

g.setColor(Color.BLACK); //设置画线的颜色

g.drawLine(int x1, int y1, int x2, int y2); //两点画直线

g.drawRect(int x, int y, int width, int height); //左上角顶点加宽高画矩形

g.fillRect(int x, int y, int width, int height); //画填充矩形

g.setFont(new Font("楷体", Font.BOLD, 40)); //设置字体为楷体,粗体,大小为40

g.drawString(str, int x, int y); //画出str字符串

g.setColor(c); //变回原来的颜色

g.setFont(f); //变回原来的字体}

GameUtil工具类导入图片import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.net.URL;

import javax.imageio.ImageIO;

public class GameUtil {

// 工具类最好将构造器私有化。

private GameUtil() {

}

public static Image getImage(String path) {

BufferedImage bi = null;

try {

URL u = GameUtil.class.getClassLoader().getResource(path);

bi = ImageIO.read(u);

} catch (IOException e) {

e.printStackTrace();

}

return bi;

}}

在Game类里面调用GameUtil

Image imag = GameUtil.getImage(“images/picture.png”); //我建立的一个images包,用来存储图片,引号里面为图片的路径

g.drawImage(imag, x, y, width, height, null); //imag图片,位置,宽高,观察者import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Image;

import javax.swing.JFrame;

public class MyGame extends JFrame{

Image imag = GameUtil.getImage("images/text1.png"); //指定图片

@Override

public void paint(Graphics g) {

Color c = g.getColor();

Font f = g.getFont();

g.setColor(Color.BLUE); //设置线体颜色

g.drawLine(100, 100, 650, 100); //直线

g.drawRect(50, 150, 200, 200); //空心矩形

g.fillRect(550, 150, 200, 200); //实体矩形

g.drawOval(300, 150, 200, 200); //圆形

g.setFont(new Font("楷体", Font.BOLD, 90)); //设置字体

g.drawString("How are you?", 100, 100); //写字

g.drawImage(imag, 250, 400, 300, 300, null); //插入图片

g.setColor(c); //线条颜色变为原来的样子

g.setFont(f); //字体变为原来的样子

}

public void launchJFrame() {

this.setTitle("我的游戏"); //设置窗口标题

this.setSize(800, 800); //设置窗口大小

this.setLocation(100, 100); //设置窗口位置

this.setVisible(true); //设置窗口可见

/*this.addWindowListener(new WindowAdapter() { //叉掉窗口后,结束窗口所在的应用程序

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

}); */

this.setDefaultCloseOperation(EXIT_ON_CLOSE); //叉掉窗口后,结束窗口所在的应用程序

}

public static void main(String args[]) {

MyGame game = new MyGame();

game.launchJFrame();

}}

设置图片的大小

public Image getScaledInstance(int width, int height, int hints)  //hints - 指示用于图像重新取样的算法类型的标志(这句话不知道是什么意思,照着下面的写就对了)Image img = GameUtil.getImage("images/text1.jpg");img = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);

如果是要获取图片的大小,直接使用getWidth()和getHeight()方法就可以了width = img.getWidth();height = img.getheight();

双缓冲技术解决闪烁

原理大概是:先将所需要画的东西加载到缓冲区,然后将缓冲区中的内容全部画到屏幕上,这样就可以避免因为屏幕加载的东西太多导致屏幕疯狂闪烁public void paint(Graphics g){

BufferedImage imag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //构建缓冲区

Graphics g2 = imag.creatGraphics(); //新建一支画笔,使用这支画笔来将内容画到缓冲区中

g2.drawRect(...); //括号里面的参数就不写了,此处用来说明一些画图操作

g2.drawImag(...);

g2.fillOval(...);

g.drawImage(imag, x, y, width, height, null); //将内容画到屏幕上}

相关教程:Java视频教程

java paint 怎么用_java如何使用paint方法画图相关推荐

  1. java字符串的用法_Java字符串的重要方法的使用实例

    String类将是您存储和处理语言的主要工具之一,本篇文章将带领大家对Java字符串的方法有个基础的认识,了解他的功能使用方法. 本文摘自千锋教育编著的<Java语言程序设计>,如需转载请 ...

  2. java math round小数_Java Math round() 使用方法及示例

    Java Math round() 使用方法及示例 Java Math round()方法将指定的值四舍五入为最接近的int或long值,然后将其返回. 也就是说,1.2四舍五入为1,1.8四舍五入为 ...

  3. java支持接口吗_java – 支持专用接口方法

    此支持允许接口的非抽象方法在它们之间共享代码.私有方法可以是静态的或实例的. 接口的私有方法可以是抽象的还是默认的? 我可以问一个例子,"私有静态接口方法"在代码方面是否有用? 解 ...

  4. java hashcode返回值_Java String hashCode() 使用方法及示例

    Java String hashCode() 使用方法及示例 Java String hashCode()方法返回字符串的哈希码. 字符串hashCode()方法的语法为: string.hashCo ...

  5. java math round小数_Java——Math的round方法

    代码如下,后面的注释是输出的结果 public static voidmain(String[] args) { System.out.println(Math.round(0.399));//0 S ...

  6. java中signum使用_Java.math.BigInteger.signum()方法实例

    全屏 Java.math.BigInteger.signum()方法实例 java.math.BigInteger.signum()返回此BigInteger的函数正负号. 声明 以下是java.ma ...

  7. java关于创建对象描述_java中创建对象的方法

    有4种显式地创建对象的方式: 1.用new语句创建对象,这是最常用的创建对象的方式. 2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor ...

  8. java解析txt文本文件_java读取文本文件内容方法详解,java如何读取txt文件?

    你知道java读取文本文件内容方式都有哪些吗?下面要给大家分享的就是比较简单的方法,一起来了解一下吧. 如何使用java实现读取TXT文件里的内容的方法以及思路: 下面先来看一下例子:import j ...

  9. java severlet 获取当前路径_Java 获取当前路径的方法总结

    Java 获取当前路径的方法总结 1.利用System.getProperty()函数获取当前路径: System.out.println(System.getProperty("user. ...

最新文章

  1. gradle新建工程,多项目依赖,聚合工程
  2. sqlserver循环
  3. 解决Jira和Confluence访问打开越来越缓慢问题
  4. RYU控制器的学习笔记(二)
  5. WCF 第十三章 可编程站点 所有都与URI相关
  6. python入门指南百度云-Python入门指南
  7. mysql基于binlog增量更新_一个应用它提取MySQL binlog,解析binlog并将增量更新数据推送到不同的接收器...
  8. Oracle数据库之基本查询
  9. C#实现动态编译代码
  10. Awesome Tools Site
  11. 表单验证的初步实现和省市级联
  12. WPF中Grid实现网格,表格样式通用类(转)
  13. 猜数字游戏编程C语言0到9,【游戏编程】猜数字游戏(C语言)
  14. Java核心知识:面向对象-多态
  15. RabbitMQ 网页端控制台开启方式
  16. 基于maven自动发布-Maven Wagon
  17. 前后加编码_如何不加思考地编码?
  18. 我的MFC/C++学习笔记 http://blog.bccn.net/CrystalFan/6909
  19. Excel打开csv或文本文件乱码怎么办?
  20. 《无线传感器网络简明教程》学习笔记整理

热门文章

  1. python max函数_Python max内置函数详细介绍
  2. git / 通过 ssh 与仓库通信
  3. windows server 2012 FTP 服务器 / 访问网络共享盘
  4. 小明分享|nRF52840 蓝牙模块连接测试
  5. mysql scope runtime_Maven依赖scope属性详解-一个报错引发的问题 - 老郭种树
  6. 浏览器设置了打开会显示特定网页为什么还是显示2345_Edge没能取代Chrome成为我的主力浏览器...
  7. php浏览器类型检测工具,php检测客户端浏览器类型的简单示例
  8. linux的mysql本地yum安装_Linux下MySQL5.7.18 yum方式从卸载到安装过程图解
  9. 搭建基于Docker社区版的Kubernetes本地集群
  10. MYSQL问题解决方案:Access denied for user 'root'@'localhost' (using password:YES)