在Java中可以使用以下方法绘画一条直线
drawLine(int x1,int y1,int x2,int y2);
其中参数(x1,y1)是直线的起点,(x2,y2)是直线的终点
Java提供了绘画空心矩形(只绘制矩形的轮廓)和填充矩形的方法,分别针对普通直线矩形、圆角矩形和三维矩形有不同的绘制方法。
①直角矩形
绘制直角矩形的轮廓:
drawRect(int x,int y,int width,int height);
其中参数(x,y)是矩形左上角坐标,width是矩形宽度,height是矩形高度;
如果有填充颜色的直角矩形,可以使用下面方法:
fillRect(int x,int y,int width,int height);
②圆角矩形
绘制圆角矩形的轮廓:
drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight);
参数arcWidth和arcHeight分别表示圆角弧的水平直径和垂直直径;
③三维矩形
绘制三维矩形的轮廓:
draw3DRect(int x,int y,int width,int height,boolean raised);
如果需要绘制一个有填充颜色的三维矩形,可以使用下面方法:
fill3DRect(int x,int y,int width,int height,boolean raised);
这两个方法的参数意义是一致的,(x,y)表示三维矩形左上角的坐标,width为矩形宽,height为矩形高,raised为true时矩形从表面凸起,raised为false时矩形从表面凹进;
绘制空心椭圆:
drawOval(int x,int y,int width,int height);
绘制带有填充颜色的椭圆:
fillOval(int x,int y,int width,int height);
这两个方法的含义一致,(x,y)表示椭圆外接矩形左上角坐标,width表示椭圆水平直径,height表示椭圆垂直直径,当width和height值相等时,绘制圆。
可以使用clearRect()方法清除绘制的图形:
clearRect(int x,int y,int width,int height);
作用是使用背景色填充指定矩形达到清除该矩形内容的效果。
案例:绘制一条直线,各种矩形各画一个,绘制一个实心椭圆和空心椭圆,画一个圆;
使用JPanel作为绘画面板 ,其中paint()方法是JPanel继承自父类的绘画方法,repaint()则是请求重画(自动调用paint())
MyPanel类代码:
import java.awt.*;
import javax.swing.*;
public class MyPanel extends JPanel{
public MyPanel(){
this.setPreferredSize(new Dimension(400,450));
this.setVisible(true);
repaint();
}
//绘画方法
public void paint(Graphics g){
Color c = g.getColor();//保存初始颜色
g.drawLine(10, 10, 100, 10);//画直线
g.drawRect(10, 30, 90, 90);//画矩形
g.setColor(Color.BLUE);
g.fillRect(10, 130, 90, 90);//画蓝色填充矩形
g.setColor(c);
g.drawRoundRect(10, 240, 90, 90, 20, 20);//画圆角矩形
g.setColor(Color.YELLOW);
g.fill3DRect(10, 340, 90, 90, true);//画凸出三维矩形
g.fill3DRect(160, 10, 90, 90, false);//画凹进三维矩形
g.setColor(c);
g.drawOval(160, 110, 180, 90);//画空心椭圆
g.setColor(Color.RED);
g.fillOval(160, 210, 180, 90);//画实心椭圆
g.setColor(c);
g.drawOval(160, 310, 90, 90);//画圆
}
}
Client类代码:
import java.awt.Container;
import javax.swing.JFrame;
public class Client extends JFrame{
public Client(){
MyPanel gamePanel = new MyPanel();//实例化面板对象
Container container = this.getContentPane();//获取窗体内置容器
container.add(gamePanel);//添加游戏主面板到内置容器
pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//当用户点击窗体右上角的x时,自动退出程序
this.setTitle("绘画例子");//设置窗体标题
this.setVisible(true);//展示窗体
}
public static void main(String[] args) {
new Client();
}
}
运行结果: