我怎么能不先显示打开的对话框呢?

ndasle7k  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(396)

好吧,我唯一的问题是打开的对话框是先显示的。我只想把它放在 JFrame 然后把剩下的放在房间里 JFrame 喜欢打开图像并显示它。应该是这样的
问题是我的 JFileChooser 先放映。还有一件事是我希望这一切都在jframe内,就像图中所示。
这是我的密码:

import java.awt.Image;
import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.border.*;

import java.awt.Color;
import java.awt.Dimension;

public class imgviewer extends JFrame{

    JButton button;
    JLabel label;

    public imgviewer() {
        super("Image viewer");
        label = new JLabel();
        label.setBounds(400, 10, 180, 300);
        Border b = BorderFactory.createLineBorder(Color.ORANGE, 2);
        JFileChooser file = new JFileChooser(".");
        label.setBorder(b);
        add(label);
        file.setPreferredSize(new Dimension(400, 300));

        file.setCurrentDirectory(new File(System.getProperty("user.home")));
        FileNameExtensionFilter filter = new FileNameExtensionFilter("*.Images", "jpg", "png", "gif");
        file.addChoosableFileFilter(filter);
            int result = file.showOpenDialog(null);
            if (result == JFileChooser.APPROVE_OPTION) {
                File selectedFile = file.getSelectedFile();
                String path = selectedFile.getAbsolutePath();
                label.setIcon(ResizeImage(path));
            }

            else if (result == JFileChooser.CANCEL_OPTION) {
                System.out.println("No File Selected");
            }

        add(file);
        setLayout(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setSize(600, 350);
        setVisible(true);
    }

     public ImageIcon ResizeImage(String ImagePath) {
         ImageIcon MyImage = new ImageIcon(ImagePath);
         Image img = MyImage.getImage();
         Image newImg = img.getScaledInstance(label.getWidth(), label.getHeight(), Image.SCALE_SMOOTH);
         ImageIcon image = new ImageIcon(newImg);
         return image;
     }

    public static void main(String[] args) {
        new imgviewer();
    }
}
igetnqfo

igetnqfo1#

我不知道怎么做你想做的事,但你把底线放在哪里 int result = file.showOpenDialog(null); 在代码中,这是一行明确表示“立即在自己的文件对话框中打开这个jfilechooser”。按照代码的顺序,这显然发生在 setVisible(true) 一行,它将打开您希望在文件对话框周围放置的 Package 器。
后面的代码有什么原因吗 file.addChoosableFileFilter(filter); ,和之前 add(file) ,是否缩进?如果您认为这段代码在一个单独的块中,它将阻止它在以后执行,那么事实并非如此。
我没有和你一起工作过 JFileChooser ,或者说荡秋千一般,已经很久了,所以我不知道一下子有多好 JFileChooser 如果将其视为嵌入到另一个组件中的独立组件,则可以工作,但如果这样做完全有效,则绝对不能使用 JFileChoosershowOpenDialog 方法。

相关问题