当前位置: 首页 > 面试题库 >

将带有图像的JLabel添加到JList以显示所有图像

督德明
2023-03-14
问题内容

这是我的代码。它不会在框架中显示图像,而是显示一些文本。有人可以建议我,我应该对代码进行哪些更改,以便可以在框架中显示图像?

import java.awt.Component;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.DefaultListModel;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;

public class ListView {


public static void main(String[] args) throws IOException {
    JFrame frame=new JFrame();
    frame.setSize(500,500);
    JLabel lbl[] = new JLabel[10];
    DefaultListModel listModel;
     ImageIcon[] b = new   ImageIcon[10];
    //JList lsm=new JList();
    listModel = new DefaultListModel();
     File folder = new File("C:/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures");
     File[] listOfFiles = folder.listFiles();
      JLabel[] lb=new JLabel[15];
    for (int i = 0; i < listOfFiles.length; i++) 
    {
          System.out.println("chek panth"+listOfFiles[i].getName().toString());
  //      b[i] = ImageIO.read(new File("C:/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures/" + listOfFiles[i].getName().toString()));
         b[i] = new ImageIcon("C:/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures/" + listOfFiles[i].getName().toString());
         lb[i]=new JLabel(b[i]);
         listModel.add(i, lb[i]);

    }
    JList lsm=new JList(listModel);

    Component add = frame.add(new JScrollPane(lsm));

    frame.setVisible(true);

}


}

问题答案:

请注意,我不会以这种方式设计代码,但是我希望使它尽可能接近原始代码,同时使其能够在基于Windows的框中显示图像列表。

列表显示

import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;

import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class ListView {

    public static void main(String[] args) throws IOException {
        String path = "C:/Documents and Settings/All Users/Documents/" +
            "My Pictures/Sample Pictures";
        JFrame frame=new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        File folder = new File(path);
        File[] listOfFiles = folder.listFiles();
        DefaultListModel listModel = new DefaultListModel();
        int count = 0;
        for (int i = 0; i < listOfFiles.length; i++)
        {
            System.out.println("check path"+listOfFiles[i]);
            String name = listOfFiles[i].toString();
            // load only JPEGs
            if ( name.endsWith("jpg") ) {
                ImageIcon ii = new ImageIcon(ImageIO.read(listOfFiles[i]));
                listModel.add(count++, ii);
            }
        }
        JList lsm=new JList(listModel);
        lsm.setVisibleRowCount(1);

        frame.add(new JScrollPane(lsm));

        frame.pack();
        frame.setVisible(true);
    }
}


 类似资料:
  • 我的问题是:我在JPanel中显示了一个JLabel的数组列表和一个JPanel的按钮,当我按下按钮时,我想在JLabel的上方显示我的JPanel。但是当我按下按钮时,我的JPanel在标签下面。 请不要告诉我使用JLayerPane,因为如果我可以不用它,那将是最好的。感谢您的解决方案。 这是我的代码的一个例子:要运行这个,请在这里找到图像100x100: http://www.html5ga

  • 问题内容: 我想使用Java读取文件夹中的所有图像。 什么时候: 我按下Java应用程序中的按钮, 它应该: 在弹出窗口中询问目录的路径, 然后 从该目录加载所有图像, 然后 显示其名称,尺寸类型和尺寸。 如何进行? 我有用于读取图像以及文件夹中所有图像的代码,但是我上面所说的事情如何完成? 欢迎任何建议或帮助!请提供参考链接! 问题答案: 未经测试,因为未在装有JDK的计算机上进行测试,所以请耐

  • 问题内容: 我有一个下拉列表。我想添加图像。我尝试在tha 标签中添加标签…但是仍然无法显示图像。如何使用标签? 问题答案: 这是不可能的,因为仅支持text。 您可能必须使用复杂的HTML / CSS / JavaScript来滚动自己的下拉控件。如何做可能不在您的问题范围内。 或者,您可以使用非重复,并在文本上加上一些填充以达到类似的效果。但是,如果每个人都有一个唯一的图像,那么您的代码将被每

  • 我遇到一个问题,当我尝试显示一个图像后,我点击一个按钮并选择图像文件在“选择文件对话框”。 最初,我设法在中显示选定的图像,但后来我创建了一个单独的,我想从那以后就开始出错了。无论我选择什么图像,都不会显示它。 我调试了它,并确保文件选择器确实将图像传递给,确实从获得值,但即使在和之后,它也不显示图像。 在这里,我附上我的代码,供您友好的参考! (我对代码进行了修剪,以保持干净的外观,因此可能会留

  • 就像我们可以调整的大小一样,我想在一个框架上显示一个图像。我希望它是可调整的,所以当我调整大小时,图像应该调整大小。

  • 问题内容: 如何在tkinter中将图像添加到小部件? 为什么当我使用此代码不起作用时: 但这行得通吗?: 问题答案: 当您尝试在第一个版本中使用图像时,该图像将被垃圾回收。 effbot很古老,但是下面的代码片段很不错: 您必须在Python程序中保留对图像对象的引用,方法是将其存储在全局变量中,或者将其附加到另一个对象。 在第二个版本中,映像是在全局级别上声明的。 这是另一个演示此问题的示例,