图标没有在JoptionPane java中重新绘制



我的程序捕获屏幕的图像,调整大小并在JoptionPane图标字段中表示它们,以便用户可以决定是否保存它们。问题是,在执行Joption.cancel之后,下次用户捕捉屏幕图像时,图标会显示上一个图像。在Joption.ok的情况下,它运行良好。知道为什么会发生这种事吗?快照本身渲染得很好(每个快照都会捕捉到当前的屏幕图像,但单击cancel后图标会显示上一个)。

  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解决了这个问题,实现的JPanel包含一个保存图像的JLabel,而不是在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);

最新更新