2016-12-15 6 views
-2

こんにちは私のイメージに問題があります。私はラベル付きのイメージのサイズを変更したいだけです。ファイルチューザーを使用する。以下にコードを示します。ラベルの幅を指定してイメージのサイズを変更する際にエラーが発生しました。Java 8.0

try { 

       File file = jfc.getSelectedFile(); 
       java.net.URL url = file.toURL(); 

       BufferedImage imageBuf = null; 
       BufferedImage imageSize = null; 


       try { 
        imageBuf = ImageIO.read(url); 
        imageSize = (BufferedImage) imageBuf.getScaledInstance(jlbl_image.getWidth(), jlbl_image.getHeight(),Image.SCALE_SMOOTH); 

        ImageIcon img; 
        img = new ImageIcon(imageSize); 
        jlbl_image.setIcon(img); 

       } catch (IOException ex) { 
        Logger.getLogger(JFRecordSection.class.getName()).log(Level.SEVERE, null, ex); 
       } 

ここで、fileChooserからイメージをロードするときのエラーコードを示します。

sun.awt.image.ToolkitImage cannot be cast to java.awt.image.BufferedImage 

答えて

0

エラーメッセージは、問題がある正確に何を言っている:あなたのイメージは、ないたBufferedImageあり、そしてそれは一つとして扱われるべきではありません。あなたの前提は間違っています。 JFileChooserからロードされたイメージがBufferedImageではなく、イメージが.getScaledInstance(...)から返されます。代わりに、それをインターフェイスタイプImageにキャストすると、それを使用できるはずです。

+0

...または単に 'imageSize'の型を' Image'に変更するだけです。全くキャスティングを行わず、誰もが勝ちます。 ;-) – haraldK

関連する問題