繁体   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