Topic: import java.awt.Shape的问题!

  Print this page

1.import java.awt.Shape的问题! Copy to clipboard
Posted by: wqq0712
Posted on: 2006-09-04 19:51


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; 却能正常编译 请问是为什么呢???

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

2.Re:import java.awt.Shape的问题! [Re: wqq0712] Copy to clipboard
Posted by: lisliefor
Posted on: 2006-09-05 09:07

我尝试编译了一下,没有问题啊!
把import java.awt.Shape;注释了,可以运行。

建议你在写代码,或者调试书上代码的时候,加点注释(或者自己的一点理解),这样其他人看起来也方便一点。


Don't use BMP in the future, please.
Your 290KB BMP has been converted to this 22KB JPEG.


3.Re:import java.awt.Shape的问题! [Re: wqq0712] Copy to clipboard
Posted by: wqq0712
Posted on: 2006-09-05 15:19

运行结果没问题了~~
可是还是如果没加那句:

4.Re:import java.awt.Shape的问题! [Re: wqq0712] Copy to clipboard
Posted by: wqq0712
Posted on: 2006-09-05 15:21

lisliefor 谢谢你~你用的是JDK1.4.2??
结果没问题了~~可是还是要加那句import java.awt.Shape;
如果不加的话 会有10个关于Shape的错误~~什么问题呢?

5.Re:import java.awt.Shape的问题! [Re: wqq0712] Copy to clipboard
Posted by: why
Posted on: 2006-09-05 18:47

no problem without that import java.awt.Shape; ...
on 1.5.0_07 or 1.5.0_08

Which JDK 5.0 are you using? (java -version)
The latest one is 1.5.0_08.

What're the exact error messages?
Do you have another Shape class in the classpath?

6.Re:import java.awt.Shape的问题! [Re: wqq0712] Copy to clipboard
Posted by: wqq0712
Posted on: 2006-09-05 19:46

我没设置 classpath

D:\example>java -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)

D:\example>javac Graphics2DDemo.java
Graphics2DDemo.java:96: incompatible types
found : java.awt.geom.Rectangle2D.Double
required: Shape
Shape shapes=new Rectangle2D.Double(30,120,30,50);
^
Graphics2DDemo.java:97: draw(java.awt.Shape) in java.awt.Graphics2D cannot be ap
plied to (Shape)
g2d.draw(shapes);
^
Graphics2DDemo.java:103: createTransformedShape(java.awt.Shape) in java.awt.geom
.AffineTransform cannot be applied to (Shape)
Shape nshape=atx.createTransformedShape(shapes);
^
Graphics2DDemo.java:104: draw(java.awt.Shape) in java.awt.Graphics2D cannot be a
pplied to (Shape)
g2d.draw(nshape);
^
Graphics2DDemo.java:107: createTransformedShape(java.awt.Shape) in java.awt.geom
.AffineTransform cannot be applied to (Shape)
nshape=atx.createTransformedShape(shapes);
^
Graphics2DDemo.java:108: draw(java.awt.Shape) in java.awt.Graphics2D cannot be a
pplied to (Shape)
g2d.draw(nshape);
^
Graphics2DDemo.java:111: incompatible types
found : java.awt.geom.Ellipse2D.Float
required: Shape
Shape shapel=new Ellipse2D.Float(80,120,100,100);
^
Graphics2DDemo.java:112: incompatible types
found : java.awt.Shape
required: Shape
Shape oldClip=g2d.getClip();
^
Graphics2DDemo.java:114: fill(java.awt.Shape) in java.awt.Graphics2D cannot be a
pplied to (Shape)
g2d.fill(shapel);
^
Graphics2DDemo.java:116: cannot find symbol
symbol : method setClip(Shape)
location: class java.awt.Graphics2D
g2d.setClip(oldClip);
^
10 errors

D:\example>

7.Re:import java.awt.Shape的问题! [Re: wqq0712] Copy to clipboard
Posted by: lisliefor
Posted on: 2006-09-05 22:29

“Don't use BMP in the future, please.
Your 290KB BMP has been converted to this 22KB JPEG. ”

这个,我下次会注意的!

从开始学java,就用IDE,所以在使用命令编译和运行程序上,不是很擅长。
而且以前使用命令编译java文件,老莫名抛出找不到main方法的异常.....
后来干脆不在记事本里写代码了......
这样的问题比较fuck!
关注一下吧!

8.Re:import java.awt.Shape的问题! [Re: wqq0712] Copy to clipboard
Posted by: wqq0712
Posted on: 2006-09-06 19:16

找到原因了~原来是我的当前目录中有Shape这个类~~~
谢谢

9.Re:import java.awt.Shape的问题! [Re: wqq0712] Copy to clipboard
Posted by: wqq0712
Posted on: 2006-09-06 19:18

lisliefor
why
谢谢你们的热心帮助!


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923