Java使用MediaTracker读写图片

标签 java swing

最近我编写了一段代码来获取图像(使用 jfileChooser),然后将其另存为硬盘上的新图片,并且成功了。但是当我尝试在其他计算机或系统上使用此代码时,它不起作用。 MediaTracker 总是包含错误,但我无法显示有关出现问题的可读信息,并且我不知道如何解决此问题(但我不会再次阅读此源代码)。

非常感谢您提供任何可能出错的想法。

    JFileChooser jfc = new JFileChooser();
    jfc.setCurrentDirectory(new File("C:\\"));
    jfc.showOpenDialog(null);
    File sf = jfc.getSelectedFile();
    if( sf==null )
        return false;

    String iconName = sf.getAbsolutePath();
    URL imgUrl = null;
    try
    {
        imgUrl = new URL("file:\\"+iconName);
    }
    catch(MalformedURLException murle){
    //plujemy!
        System.out.println(murle);
    }
    imageA = getToolkit().getImage(imgUrl);
    MediaTracker mt = new MediaTracker(this);
    try
    {
        mt.addImage(imageA,0);
        mt.waitForAll();
    }
    catch (InterruptedException ie)
    {
        ie.printStackTrace(new PrintStream(System.out));
        return false;
    }
    if(mt.isErrorAny()){
        return false;
    }else{
        return true;
    }

最佳答案

据猜测,由于没有完整的示例,您对 waitForAll() 的调用会阻塞 event dispatch thread 。请注意 MediaTracker 如何API 示例在后台线程中等待。作为替代方案,请使用 SwingWorker加载图像,如图 here .

关于Java使用MediaTracker读写图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18775456/

相关文章:

java - 自定义异常类未编译到 .class 文件中

java - OpenCV 2.4.8 中的 detectMultiScale 参数,Java

java - 如何移动屏幕上的对象

java - 重绘其他组件时 JLabel 调整大小

java - 如何在 JPanel 的顶部和底部排列 JComponents

java - 对AdjustmentListener的递归调用 - StackOverFlow Error Swing Java

java - 从子类调用非抽象方法

java - 如何更改显示标签排序属性链接

java - 所选目录不是 JDK 的有效主目录 - Windows 上的 IntelliJ JavaFX JDK

java - 在 Java 应用程序中创建自定义的标题栏和选项卡式 Pane