2016-11-29 3 views
-3

に表示されていない画像.. スニペットそれがファイルを選択することになるが、画像を表示するwouldntは私のメインフォームクラスにこのメソッドが呼び出さ私のJLabelの

P

ublic class imageSending { 

public static File setpix(File k) throws IOException { 


    //  throw new UnsupportedOperationException("Not supported yet."); 


     JFileChooser choose=new JFileChooser(); 
     choose.setDialogTitle("Browse Image"); 
     choose.setFileSelectionMode(2); 
     int a=choose.showOpenDialog(null); 
     if (a==0){ 
     File file=new File(choose.getSelectedFile().getPath()); 

      BufferedImage img=ImageIO.read(file); 


      ImageIcon o = new ImageIcon(img.getScaledInstance(300, 300, 300)); 
    }return k; 
    } 
} 
+1

画像を表示するであろうそのコードでは何もありません。あなたが他の画像を表示するコードを持っているなら、それを示してください、あなたの質問をより詳細に説明してください。 –

+0

また、1)JFileChooser、 'getSelectedFile()'はファイルを返します。なぜパスを取得してからファイルを取得すると、より複雑になっていますか? 2)あなたが戻ってきた 'k'とは何ですか? 3)BufferedImageを作成してからImageIconを作成しますが、作成したアイコンは何もしません。なぜですか? –

+0

ああ、私は 'k'がパラメータであることを知っています - どうしてこのメ​​ソッドはパラメータを受け取り、それを単に返すのですか?これは、メソッド本体のすべてのコードが、プログラムが無視しようとしている忙しい作業であるかのようです。したがって、これはもっと混乱しています。このコードが何をすべきかを説明してここで助けてください。 –

答えて

0

これは、一言で言えば上記のあなたの方法であり、

public static File setpix(File k) throws IOException { 
    // do lots of busy work that accomplishes nothing 
    // and then return k: 
    return k; 
} 

これだけです。実際にGUIにイメージを表示する場合は、代わりに次のようにします。

  1. JFileChooserから取得したファイルを取得します。ただ、getSelectedFile()に文字列に変換する必要を呼び出していないし、ファイルからあなたBufferedImageを取得し、
  2. メソッドはイメージアイコン
  3. どこかを返す持ってイメージアイコンに変換ファイル
  4. を取得し、呼び出しますアイコンをsetIcon(...)経由であなたのJLabelに入れてください。他の場所で次に例えば

(コードがテストされていない)

public Icon getIcon() throws IOException { 
    JFileChooser choose = new JFileChooser(); 
    choose.setDialogTitle("Browse Image"); 
    // choose.setFileSelectionMode(2); // no "Magic" numbers 
    choose.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // Better 
    int a = choose.showOpenDialog(null); 
    if (a == 0) { 
     File file = choose.getSelectedFile(); 
     BufferedImage img=ImageIO.read(file); 
     Icon o = new ImageIcon(img.getScaledInstance(300, 300, 300)); 
     return o; 
    } else { 
     // throw an exception here 
     // or return null if that's what the program expects 
     // or return some "default" icon 
    } 
} 

Icon icon = getIcon(); 
myLabel.setIcon(icon); 

// or 
JOptionPane.showMessageDialog(null, icon); 
関連する問題