Java 从另一个目录读取图像

Java 从另一个目录读取图像,java,swing,Java,Swing,我需要从另一个目录打开一个映像,但是当我尝试输入整个路径名(如/Users/Documents/image.dcm)时,以下代码不起作用 我正在尝试打开一个dicom图像。我这样做是为了能为这段代码制作GUI,但我真的被卡住了。我试过很多东西,但似乎都不管用。如有任何建议,将不胜感激 /** * This class displays the first frame of a file from any format * supported by ImageIO. * In the cas

我需要从另一个目录打开一个映像,但是当我尝试输入整个路径名(如
/Users/Documents/image.dcm
)时,以下代码不起作用

我正在尝试打开一个
dicom
图像。我这样做是为了能为这段代码制作GUI,但我真的被卡住了。我试过很多东西,但似乎都不管用。如有任何建议,将不胜感激

/**
 * This class displays the first frame of a file from any format
 * supported by ImageIO.
 * In the case of DICOM files, stored values are displayed as
 * is, without using Value of Interest or Presentation LUTs.
 */

class Read1 {
    public static void main(String[] s) {
        try {
            //System.out.println(s[0]);
            if (s.length != 1) {
                //System.err.println("Please supply an input file");
                System.exit(1);
            }

            //URL url = Main.class.getResource(s[0]);
            ImageIO.scanForPlugins();
            final BufferedImage bi = ImageIO.read(new File(s[0]));
            if (bi == null) {
                System.err.println("read error");
                System.exit(1);
            }

            JFrame jf = new JFrame();
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            final Rectangle bounds = new Rectangle(0, 0, bi.getWidth(), bi.getHeight());
            JPanel panel = new JPanel() {
                public void paintComponent(Graphics g) {
                    Rectangle r = g.getClipBounds();
                    ((Graphics2D) g).fill(r);
                    if (bounds.intersects(r))
                        g.drawImage(bi, 0, 0, null);
                }
            };
            jf.getContentPane().add(panel);
            panel.setPreferredSize(new Dimension(bi.getWidth(), bi.getHeight()));
            jf.pack();
            jf.setVisible(true);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
你可以试试任何一种

// Read from same package 
ImageIO.read(getClass().getResourceAsStream("c.png"));

// Read from absolute path
ImageIO.read(new File("E:/SOFTWARE/TrainPIS/res/drawable/c.png"));

// Read from images folder parallel to src in your project
ImageIO.read(new File("images/c.jpg"));

// Read from src/images folder
ImageIO.read(getClass().getResource("/images/c.png"))

// Read from src/images folder
ImageIO.read(getClass().getResourceAsStream("/images/c.png"))
你可以试试任何一种

// Read from same package 
ImageIO.read(getClass().getResourceAsStream("c.png"));

// Read from absolute path
ImageIO.read(new File("E:/SOFTWARE/TrainPIS/res/drawable/c.png"));

// Read from images folder parallel to src in your project
ImageIO.read(new File("images/c.jpg"));

// Read from src/images folder
ImageIO.read(getClass().getResource("/images/c.png"))

// Read from src/images folder
ImageIO.read(getClass().getResourceAsStream("/images/c.png"))
你可以试试任何一种

// Read from same package 
ImageIO.read(getClass().getResourceAsStream("c.png"));

// Read from absolute path
ImageIO.read(new File("E:/SOFTWARE/TrainPIS/res/drawable/c.png"));

// Read from images folder parallel to src in your project
ImageIO.read(new File("images/c.jpg"));

// Read from src/images folder
ImageIO.read(getClass().getResource("/images/c.png"))

// Read from src/images folder
ImageIO.read(getClass().getResourceAsStream("/images/c.png"))
你可以试试任何一种

// Read from same package 
ImageIO.read(getClass().getResourceAsStream("c.png"));

// Read from absolute path
ImageIO.read(new File("E:/SOFTWARE/TrainPIS/res/drawable/c.png"));

// Read from images folder parallel to src in your project
ImageIO.read(new File("images/c.jpg"));

// Read from src/images folder
ImageIO.read(getClass().getResource("/images/c.png"))

// Read from src/images folder
ImageIO.read(getClass().getResourceAsStream("/images/c.png"))

得到了什么错误?不要忘记在重写的
paintComponent()
方法中调用
super.paintComponent()
。尝试避免使用
setPreferredSize()
方法好的,谢谢我在函数中加入了super.paintComponent()。得到了什么错误?不要忘记调用
super.paintComponent()
在重写的
paintComponent()
方法中。尽量避免使用
setPreferredSize()
方法好的,谢谢我在函数中加入了super.paintComponent()。您会遇到什么错误?不要忘了在重写的
paintComponent()中调用
super.paintComponent()
method.尽量避免使用
setPreferredSize()
方法好的,谢谢我在函数中加入了super.paintComponent()。出现了什么错误?别忘了在重写的
paintComponent()
方法中调用
super.paintComponent()
方法。尽量避免使用
setPreferredSize())
methodOK谢谢我在函数中加入了super.paintComponent()。