0

我创建了一个基本的摇摆程序,JDialog它在通过JFileChooser. 我JScrollPane在对话框内部使用了JLabel一个,在窗格内使用了一个作为图标添加的图像。

以下是我用来构造对话框及其内容的代码,对象已经通过一个简单的 new 调用进行了初始化:

    jDialog1.setTitle("Image");
    jDialog1.setModal(true);

    jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    jScrollPane2.setViewportView(jLabel1);

Netbeans 已用于构建 GUI。

以下是我用来加载和显示图像的代码:

    int rval = jFileChooser1.showDialog(this, "Show");
    File f = jFileChooser1.getSelectedFile();
    jDialog1.setTitle(jDialog1.getTitle() + " : " + f.getName());
    try {
        BufferedImage bf = ImageIO.read(f);
        jLabel1.setIcon(new ImageIcon(bf));
    }
    catch (IOException ioe) {
    }
    jDialog1.setLocationRelativeTo(null);
    jDialog1.setVisible(true);
    jDialog1.pack();

虽然图像已加载并显示,但问题是

  • 我的对话框以最小化的形式出现在左上角,我必须拖动它的角才能查看图像。包括相同的图像。

    在此处输入图像描述

  • 滚动窗格的水平滚动在对话框完全展开和图像完全显示之前很久就消失了。虽然垂直滚动条效果很好。

我已经尝试设置两者的大小和首选大小,JDialogJLabel问题仍然存在。

提前谢谢!

注意:水平滚动条问题用pack()对话框上的方法解决了,但是最小化的对话框还在。此外,对话框现在也出现在屏幕中央。

4

1 回答 1

3

模式对话框的方法调用顺序很重要,您必须在使对话框可见之前调用包(因为否则在关闭对话框之前不会执行包):

dialog.pack();
// Edit: manually double its size:
dialog.setSize(dialog.getPreferredSize().width * 2, dialog.getPreferredSize().height * 2);
dialog.setVisible(true);
于 2013-03-30T10:43:56.970 回答