2013-11-27 80 views
0

我的程序捕獲屏幕圖像,調整大小並在JoptionPane圖標欄中顯示它們,以便用戶可以決定天氣或不保存它們。 問題是,在執行Joption.cancel後,圖標會在用戶下次捕獲屏幕圖像時顯示上一張圖像。在Joption.ok情況下它工作正常。 任何想法爲什麼發生這種情況?快照本身呈現良好(每個快照捕獲當前屏幕圖像,但一旦點擊取消,圖標就會顯示前一個快照)。在JoptionPane中不重繪的圖標java

rszedSnp=ImageMagick.resize(origSnp_name,30); 
ImageIcon icon=new ImageIcon(rszedSnp); 
    String userIput = (String)JOptionPane.showInputDialog(
      new JFrame(), 
          "Save as:\n", 
          "taking screen shot", 
          JOptionPane.PLAIN_MESSAGE, 
          icon , 
          null, 
          origSnp_name); 
+2

1)對代碼塊使用一致的邏輯縮進。代碼的縮進旨在幫助人們理解程序流程。 2)爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

+2

新的JFrame()是第一個。錯誤的想法.........,遵循第1節中所述的建議。在這裏評論,當然只有在這種情況下,如果你想要做些什麼...... – mKorbel

+0

我管理擴展JDialog。 – pomme

回答

0

我使用的JDialog,包含一個JLabel保持圖像的實現的JPanel,而不是使用中的JOptionPane#showInputDialog功能的圖像圖標解決了這個問題。 。

BufferedImage img = ImageIO.read(new File(image)); 
resize(img); 
JLabel lbl = new JLabel(new ImageIcon(img)); 
lbl.setVisible(true); 

JPanel imgPan = new JPanel(); 
imgPan.add(new JScrollPane(lbl)) 

JDialog dialog = new JDialog(); 
JPanel globalPan = new JPanel(new GridLayout(2,2)); 
globalPan.add(imgPan); 
dialog.add(globalPan); 

dialog.pack(); 
dialog.setVisible(true);