java - 图像不会显示在 JPanel 上

标签 java swing

刚刚开始使用 Java,是一名初学者。我尝试创建一个照片查看器,它可以在目录中搜索图像并打开该图像,但我的程序不会显示该图像。

当我运行该程序时,它会打开并显示一个菜单栏,我用它来搜索我的目录,但即使我选择一个图像,它也不会显示。 TIA。

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.imageio.ImageIO;

public class ICS
{
private JPanel gui;
private JFileChooser fileChooser;
FilenameFilter fileNameFilter;
private JMenuBar menuBar;
DefaultListModel model; 
public ICS() {
    gui = new JPanel(new GridLayout());

    final JLabel imageView = new JLabel();
    gui.add(imageView);

    fileChooser = new JFileChooser();
    String[] imageTypes = ImageIO.getReaderFileSuffixes();

    menuBar = new JMenuBar();
    JMenu menu = new JMenu("GET PHOTO HERE");
    menuBar.add(menu);
    JMenuItem browse = new JMenuItem("browse");
    menu.add(browse);

    browse.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae) {
                int result = fileChooser.showOpenDialog(gui);
                if (result==JFileChooser.APPROVE_OPTION) {
                    File eg = fileChooser.getSelectedFile();
                }
            }
        }); 
}

public void loadImages(File directory) throws IOException {
    File[] imageFiles = directory.listFiles(fileNameFilter);
    BufferedImage[] images = new BufferedImage[imageFiles.length];
}

public Container getGui() {
    return gui;
}

public JMenuBar getMenuBar() {
    return menuBar;
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                ICS imageList = new ICS();

                JFrame f = new JFrame("Image Browser");
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                f.add(imageList.getGui());
                f.setJMenuBar(imageList.getMenuBar());
                f.setLocationByPlatform(true);
                f.pack();
                f.setSize(800,600);
                f.setVisible(true);
            }
        });
}

}

最佳答案

您没有对所选文件执行任何操作。鉴于您的 JPanel 中有一个空的 JLabel,您可以简单地为该组件设置 Icon:

imageView.setIcon(new ImageIcon(eg.getPath()));

关于java - 图像不会显示在 JPanel 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15603647/

相关文章:

java - 如何使用 BorderLayout 将 JPanel 返回到 JFrame 的中心?

java - 按钮操作后看不到变量变化

Java Swing 按钮: setColor doesn't display the right color

java - 在 JScrollPane 中的 JList 之间切换

java - Netbeans 大纲的展开/折叠监听器

java - 运行配置缺少参数选项卡

java - 程序在遍历目录树时在 JTextArea 中显示文件名,但我不知道如何通过按键停止它

java - 修改滚动日志文件名以在 log4j 中包含日期

java - 使用注释进行跟踪记录

java - 如何包装 OAuth2 异常?