簡體   English   中英

JoptionPane Java中圖標未重畫

[英]icon not repainting in JoptionPane java

我的程序捕獲屏幕上的圖像,調整大小並在JoptionPane圖標中表示它們,以便用戶決定是否保存天氣。 問題是執行Joption.cancel后,該圖標在用戶下次捕獲屏幕圖像時顯示上一個圖像。 在Joption.ok的情況下,它可以正常工作。 知道為什么會這樣嗎? 快照本身被很好地渲染(每個快照都捕獲當前的屏幕圖像,但是一旦單擊取消,該圖標將顯示前一個圖像)。

  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);  

我已經通過使用JDialog解決了該問題,該實現使用包含JLabel的JPanel實現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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM