📄 32.txt
字号:
//
AWT 绘图
可以在任何Java组件上绘图(通常Canvas和Panel组件更适合用于绘图)
每个Java组件都有一个public void paint(Graphics g)方法专门用于绘图目的,每次重画该组件时都自动调用paint方法。
每个Java组件都有一个Graphics类型的属性,该属性(对象)真正完成在相应组件上的绘图功能。
Graphics类中实现了许多绘图方法:
-- 绘制边框(非填充图形)
-- 填充特定区域
-- 绘制其它形状图形
//
AWT 绘图举例
import java.awt.*;
class SubPanel extends Panel{
public void paint(Graphics g){
g.drawString("this is a drawing test!",20,20);
g.drawLine(30,60,100,120);
g.draw3DRect(60,50,70,30,false);
}
}
public class AWTDrawing2 {
private Frame f = new Frame(" Hello Out There!");
private SubPanel p = new SubPanel();
public void launchFrame() {
f.add(p);
f.setSize(170,170);
f.setBackground( new Color(89,145,145));
f.setVisible( true);
}
public static void main( String args[]) {
AWTDrawing2 guiWindow = new AWTDrawing2();
guiWindow.launchFrame();
}
}
//
Graphics类
Graphics提供基本的绘图功能,update()及paint()通过操纵Graphics对象实现绘图操作;
AWT组件可以通过方法 getGraphics() 获得与其相关的Graphics对象;
Graphics类常用方法
public abstract void drawXXX(…)
public abstract void fillXXX(…)
public abstract void drawXXX(…)
setFont() / getFont()
setColor() / getColor()
//
Font类
java.awt.Font类用于描述字体信息,其构造方法格式为:
public Font(String name, int style, int size)
name : 字体名称
style :字体样式(Font.PLAIN, Font.BOLD, Font.ITALIC)
size :字体大小
AWT组件可使用Component 类中定义的getFont(), setFont() 方法进行字体操作
可以通过GraphicsEnvironment类的方法getAvailableFontFamilyNames()获得JDK所支持的字体列表;
//
绘图实例
/**
@version 1.30 1999-12-21
@author Cay Horstmann
*/
import javax.swing.*;
import java.awt.*;
import java.lang.*;
import java.awt.geom.*;
// 显示框架,并得到屏幕像素
public class FrameTest
{
public static void main(String[] args)
{
SimpleFrame frame = new SimpleFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(200,250);
frame.setVisible(true);
frame.setIconImage(Toolkit.getDefaultToolkit().getImage("1.gif"));
}
}
// add Object to Panel
/// add Panel to Frame
class SimpleFrame extends JFrame
{
public SimpleFrame()
{
setSize(WIDTH, HEIGHT);
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();
int screenWidth=screenSize.width;
int screenHeight=screenSize.height;
String title = "屏幕像素:" +screenWidth+"*"+screenHeight;
this.setTitle(title);
// create a panel
SimplePanel panel = new SimplePanel();
// add panel to frame
Container contentPane = getContentPane();
contentPane.add(panel);
//draw a string
}
public static final int WIDTH = 400;
public static final int HEIGHT = 300;
}
class SimplePanel extends JPanel
{
String str= new String("蝴蝶");
public void paintComponent(Graphics g)
{
super.paintComponent (g);
Graphics2D g2 = (Graphics2D)g;
//draw
Point2D p = new Point2D.Double(X,Y);
for(int i = 0;i<50000;i++)
{
Point2D p1 = new Point2D.Double(p.getX()+WIDTH*Math.cos(i/WIDTH),p.getY()+HEIGHT*Math.sin(i/HEIGHT));
Line2D line = new Line2D.Double(p,p1);
g2.draw(line);
}
//draw string
Font font = new Font("华文隶书",Font.BOLD,30);
g2.setFont(font);
g2.setPaint(Color.blue);
g2.drawString(str,50,50);
g2.setPaint(Color.yellow);
Ellipse2D ellip = new Ellipse2D.Float();
ellip.setFrame(new Rectangle2D.Float(X-40,Y-10,WIDTH/6,HEIGHT/6));
g2.draw(ellip);
Ellipse2D ellip2 = new Ellipse2D.Float();
ellip2.setFrame(new Rectangle2D.Float(X+20,Y-10,WIDTH/6,HEIGHT/6));
g2.draw(ellip2);
/*
//draw rectangle
g2.setPaint(Color.red);
Rectangle2D rect = new Rectangle2D.Float(X,Y,WIDTH,HEIGHT);
g2.draw(rect);
//draw Ellipse
// draw line
g2.setPaint(Color.white);
Line2D line = new Line2D.Float(X,Y+HEIGHT/2,X+WIDTH,Y+HEIGHT/2);
g2.draw(line);
// draw circle
g2.setPaint(Color.green);
g2.setBackground(Color.cyan);
Ellipse2D circle = new Ellipse2D.Float();
Point2D point1 = new Point2D.Float(X+WIDTH/2,Y+HEIGHT/2);
Point2D point2 = new Point2D.Float(X+WIDTH/2+HEIGHT/2,Y);
circle.setFrameFromCenter(point1,point2);
g2.draw(circle);
g2.setPaint(new Color(1,128,128));
g2.fill(circle);
*/
}
private static final int X = 160;
private static final int Y = 160;
private static final int WIDTH = 100;
private static final int HEIGHT = 50;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -