返回信息流在程序中加下面语句,并没有读到文件,想问下这是为什么:
String filename="ha.jpeg";
Image image=Image.read(new File(filename));
谢谢![em18]
这是一条镜像帖。来源:北邮人论坛 / java / #12457同步于 2009/11/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
求助
yanny6
2009/11/28镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
程序是这样的:
import javax.swing.*;
import java.awt.*;
public class Myframe extends JPanel {
public static final int DEFAULT_WIDTH=200;
public static final int DEFAULT_HEIGHT=200;
public Myframe()
{
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
}
public static void main(String[] args) {
Myframe frame=new Myframe();
Toolkit a=Toolkit.getDefaultToolkit();
Dimension b=a.getScreenSize();
int c=b.width;
int d=b.height;
frame.setSize(c/2,d/2);
frame.setBackground(Color.red);
Choice ColorChooser = new Choice();
ColorChooser.add("窗口为红色");
ColorChooser.add("窗口为绿色");
frame.add(ColorChooser,"North");
Button e=new Button("Hello");
frame.add(e,"South");
Myconponent h=new Myconponent();
frame.add(h);
frame.setVisible(true);
}
}
class Myconponent extends JComponent {
public void paintComponent(Graphics g)
{
Graphics2D g2=(Graphics2D) g;
try
{
String filename="yanny.jpeg";
Image image=ImageIO.read(new File("yanny.jpeg"));
g2.drawImage(image,200,100,null);
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
【 在 yanny6 的大作中提到: 】
: 在程序中加下面语句,并没有读到文件,想问下这是为什么:
: String filename="ha.jpeg";
: Image image=Image.read(new File(filename));
: ...................
恩,是这样吗:
String urlname="E:\\workspace\\wang\\yanny.jpeg";
Image image=ImageIO.read(new URL(urlname));
感觉不行啊,读文件的时候对文件有要求吗??比如说文件大小什么的
【 在 thl2002 的大作中提到: 】
: 指定绝对路径是肯定可以的,绝对路径如"e:\\myfile\\ha.jpeg",记得是双斜杠
呵呵,你刚刚还是file,怎么变成URL了?你这样试试看:
String filename="E:\\workspace\\wang\\yanny.jpeg";
Image image=Image.read(new File(filename));
呵呵,还是不行,还出来这些错误:
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1275)
at Myconponent.paintComponent(Myconponent.java:20)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5131)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
at javax.swing.JComponent.paint(JComponent.java:1015)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
at java.awt.Container.paint(Container.java:1780)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
【 在 thl2002 的大作中提到: 】
: 呵呵,你刚刚还是file,怎么变成URL了?你这样试试看:
: String filename="E:\\workspace\\wang\\yanny.jpeg";
: Image image=Image.read(new File(filename));
建议不要用'\\'这种符号,这就把你的代码局限在windows下面了。
直接用'/'这样作为分隔符。而且尽量使用相对路径。这样你的代码可以有移植性。
【 在 thl2002 的大作中提到: 】
: 指定绝对路径是肯定可以的,绝对路径如"e:\\myfile\\ha.jpeg",记得是双斜杠