import java.awt 无法_Java开发网 - import java.awt.Shape的问题!

import java.awt.*;

import java.awt.Shape; //不加这句的结果...

import java.awt.event.*;

import java.awt.geom.*;

import javax.swing.*;

import java.util.*;

import java.awt.image.BufferedImage;

public class Graphics2DDemo extends JFrame

{

public Graphics2DDemo()

{

this.getContentPane().add(new MyPanel());

setTitle("Graphics2D绘图方法演示");

setSize(380,260);

setVisible(true);

}

public static void main(String args[])

{

JFrame.setDefaultLookAndFeelDecorated(true);

Font fonts=new Font("JFrame",Font.PLAIN,14);

Enumeration keys=UIManager.getLookAndFeelDefaults().keys();

while(keys.hasMoreElements())

{

Object keyss=keys.nextElement();

if(UIManager.get(keyss) instanceof Font)

UIManager.put(keyss,fonts);

}

Graphics2DDemo mainFrame=new Graphics2DDemo();

}

}

class MyPanel extends JPanel

{

MyPanel()

{

setBackground(Color.WHITE);

setOpaque(true);

}

public void paintComponent(Graphics g)

{

super.paintComponent(g);

Graphics2D g2d=(Graphics2D)g;

BasicStroke bs=new BasicStroke(10.0f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

g2d.setStroke(bs);

g2d.drawLine(30,10,100,10);

bs=new BasicStroke(10.0f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL);

g2d.setStroke(bs);

g2d.drawLine(30,30,100,30);

bs=new BasicStroke(10.0f,BasicStroke.CAP_SQUARE,BasicStroke.JOIN_BEVEL);

g2d.setStroke(bs);

g2d.drawLine(30,50,100,50);

GeneralPath path=new GeneralPath();

path.moveTo(140,50);

path.lineTo(190,10);

path.lineTo(240,50);

bs=new BasicStroke(10.0f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

g2d.setStroke(bs);

g2d.draw(path);

path.reset();

path.moveTo(140,70);

path.lineTo(190,30);

path.lineTo(240,70);

bs=new BasicStroke(10.0f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);

g2d.setStroke(bs);

g2d.draw(path);

path.reset();

path.moveTo(140,90);

path.lineTo(190,50);

path.lineTo(240,90);

bs=new BasicStroke(10.0f,BasicStroke.CAP_SQUARE,BasicStroke.JOIN_MITER);

g2d.setStroke(bs);

g2d.draw(path);

Ellipse2D e=new Ellipse2D.Float(20,60,100,50);

GradientPaint dp=new GradientPaint(20,60,Color.YELLOW,100,50,Color.BLUE);

g2d.setPaint(dp);

g2d.fill(e);

Image img=new ImageIcon("mmm.jpg").getImage();

BufferedImage bImage=new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);

//BufferedImage bImage=new BufferedImage(img.getWidth(),img.getHeight(),BufferedImage.TYPE_INT_RGB);

Graphics2D g2=bImage.createGraphics();

g2.drawImage(img,null,null);

Rectangle2D tr=new Rectangle2D.Double(0,0,bImage.getWidth(),bImage.getHeight());

TexturePaint tp=new TexturePaint(bImage,tr);

g2d.setPaint(tp);

RoundRectangle2D r=new RoundRectangle2D.Float(260,10,100,100,50,50);

g2d.fill(r);

g2d.setColor(Color.BLACK);

g2d.setStroke(new BasicStroke(1.0f));

Shape shapes=new Rectangle2D.Double(30,120,30,50);

g2d.draw(shapes);

AffineTransform at=AffineTransform.getTranslateInstance(60,0);

g2d.transform(at);

AffineTransform atx=AffineTransform.getRotateInstance(Math.PI/6,30,120);

Shape nshape=atx.createTransformedShape(shapes);

g2d.draw(nshape);

g2d.transform(at);

atx=AffineTransform.getShearInstance(0.0,0.3);

nshape=atx.createTransformedShape(shapes);

g2d.draw(nshape);

Rectangle2D rr=new Rectangle2D.Float(80,120,40,40);

Shape shapel=new Ellipse2D.Float(80,120,100,100);

Shape oldClip=g2d.getClip();

g2d.setClip(rr);

g2d.fill(shapel);

g2d.setClip(oldClip);

Rectangle2D redRect=new Rectangle2D.Float(130,120,80,80);

Rectangle2D blueRect=new Rectangle2D.Float(160,130,80,80);

AlphaComposite ac=AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f);

g2d.setPaint(Color.red);

g2d.fill(redRect);

g2d.setComposite(ac);

g2d.setPaint(Color.BLUE);

g2d.fill(blueRect);

}

}

我用的是JDK1.5

如果不加这句:import java.awt.Shape;会出现10个编译错误 全都是有关Shape的!加了 才能正常编译~~请问是为什么呢?不是已经import java.awt.*;

让别人编 译(他用的是JDK1.4.2) 不加import java.awt.Shape; 却能正常编译 请问是为什么呢???

还有这个程序运行结果有点问题~~希望也能帮我指出来!谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值