java图形和文本学习

本文学习的是《Java开发实战1200例.第2卷》,文中的代码都是来自于网络。
首先上整个程序:
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class DrawLineFrame extends JFrame{
    myPanel p = new myPanel();//定义一个画布
    public static void main(String[] args) {
        DrawLineFrame myFrame = new DrawLineFrame();
    }

    public DrawLineFrame(){
        super();//调用父类构造方法
        setTitle("画直线");
        setBounds(100,100,200,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 窗体关闭方式
        setVisible(true);
        add(p);
    }
}

class myPanel extends JPanel{
    public void paint(Graphics g){//重写paint方法
        g.drawLine(10, 20, 10, 80);
        g.drawLine(80, 20, 80,87);
        g.drawLine(40, 20, 40,90);//利用画笔的drawLine方法画直线
    }
}
整个程序的思想是:1.首先写一个 myPanel类,并继承了JPanel类,重写其中的paint方法。 2.通过paint方法获取一个画笔类Graphics,通过调用Graphics类的很多方法来画图。3.定义一个DrawLineFrame类,继承了JFrame,重写其构造函数,构造函数包括设置title的名称,设置大小以及关闭窗口的事件,并添加myPanel对象。
下面说一下后面会出现的Graphics类中的各种方法。首先介绍下Graphics类,这是一个抽象类,位于java.awt包中。但是这里的paint方法还实例化了一个Graphics类,这个百度了下,还没弄明白。其中的很多方法都是abstract类型的。下面介绍几种:
1.public abstract void drawLine(int x1,int y1,int x2,int y2)
//其中(x1,y1)(x2,y2)分别是直线的起始和终止点的位置。

2.public abstract void drawRect(int x1,int y1,int x2,int y2)
//其中(x1,y1)(x2,y2)分别是矩形左上角和右下角的点的位置,画一个空的矩形
public abstract void fillRect(int x1,int y1,int x2,int y2)
//其中(x1,y1)(x2,y2)分别是矩形左上角和右下角的点的位置,画一个实心矩形
//对于正方形,在设置具体的点的时候设置边长相等就行了

3.public abstract void drawOval(int x1,int y1,int width,int height)
  public abstract void fillOval(int x1,int y1,int width,int height)
//画一个椭圆,(x1,y1)是椭圆左上角的坐标,width和height是椭圆的宽和高

4.public abstract void drawArc(int x1,int y1,int width,int height,int startAngle,int arcAngle)
//绘制一个圆弧

5.public abstract void fillArc(int x1,int y1,int width,int height,int startAngle,int arcAngle)
//绘制一个扇形

6.public abstract void drawPolygon(int[] xPoints,int[] yPoints,int nPoints)
//绘制一个多边形,xPoints是对应点的x坐标,yPoints是对应点的y坐标,nPoints是绘制多边形的条数
上面是画图的几种方法。还可以通过调用java.awt.geom包中的二次和三次曲线。下面是画一个三次曲线的事例:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.CubicCurve2D;//三次曲线对象
import javax.swing.JFrame;
import javax.swing.JPanel;

public class DrawCubicCurveFrame extends JFrame {
    DrawCubicCurvePanel cubicCurvePanel = new DrawCubicCurvePanel(); // 创建面板类的实例

    public static void main(String args[]) { // 主方法
        DrawCubicCurveFrame frame = new DrawCubicCurveFrame(); // 创建窗体类的实例
        frame.setVisible(true); // 显示窗体
    }

    public DrawCubicCurveFrame() {
        super(); // 调用超类的构造方法
        setTitle("绘制三次曲线"); // 窗体标题
        setBounds(100, 100, 297, 199); // 窗体的显示位置和大小
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 窗体关闭方式
        add(cubicCurvePanel); // 将面板类的实例添加到窗体容器中
    }

    class DrawCubicCurvePanel extends JPanel { // 创建内部面板类
        public void paint(Graphics g) { // 重写paint()方法
            Graphics2D g2=(Graphics2D)g;// 获得Graphics2D对象
            // 创建三次曲线,其中点140,-140和点140,300是控制点,点20,80是起始点坐标,点260,80是终点坐标
            CubicCurve2D.Double cubicCurve = new CubicCurve2D.Double(20,80,140,-140,140,300,260,80);
            g2.draw(cubicCurve); // 绘制三次曲线
        }
    }
}

对于二次曲线只要调用QuadCurve2D.Double类的构造方法即可,实例如下:

QuadCurve2D.Double quadCurve2 = new QuadCurve2D.Double(60,120,120,40,180,120);
上面讲解了截图的图形方法,下面讲解如何设置文本。直接看代码:
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TextFontFrame extends JFrame {
    ChangeTextFontPanel changeTextFontPanel = new ChangeTextFontPanel(); // 创建面板类的实例

    public static void main(String args[]) { // 主方法
        TextFontFrame frame = new TextFontFrame(); // 创建窗体类的实例
        frame.setVisible(true); // 显示窗体
    }
    public TextFontFrame() {
        super(); // 调用超类的构造方法
        setTitle("设置文本的字体"); // 窗体标题
        setBounds(100, 100, 333, 199); // 窗体的显示位置和大小
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 窗体关闭方式
        add(changeTextFontPanel); // 将面板类的实例添加到窗体容器中
    }
    class ChangeTextFontPanel extends JPanel { // 创建内部面板类
        public void paint(Graphics g) { // 重写paint()方法
            String value = "明日编程词典社区";
            int x = 40; // 文本位置的横坐标
            int y = 50; // 文本位置的纵坐标
            Font font = new Font("华文行楷", Font.BOLD + Font.ITALIC, 26); // 创建字体对象
            g.setFont(font); // 设置字体
            g.drawString(value, x, y); // 绘制文本
            value = "http://community.mrbccd.com";
            x = 10; // 文本位置的横坐标
            y = 100; // 文本位置的纵坐标
            font = new Font("宋体", Font.BOLD, 20); // 创建字体对象
            g.setFont(font); // 设置字体
            g.drawString(value, x, y); // 绘制文本
        }
    }
}
程序中调用了drawString方法来实现具体的文本书写功能;调用setFont方法来设置字体;setColor方法可以设置字体的颜色。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值