有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Jlabel中的java显示图像图标

我正在用Netbeans做一个程序

。。我需要在JPanel中显示文件夹的内容(有图像)

。。。在jlabel中显示每个图像

。。。。我做了这个代码,但它不起作用

。。。。。。我用JButton和JPanel创建了一个界面:

public class MyInterface extends javax.swing.JFrame
{

    /** Creates new form NewJFrame1 */
    public MyInterface()
    {
        initComponents();
    }

    private File files;

    private JFileChooser es = new JFileChooser();

    String path;
    JLabel label;

    public List<ImageIcon> pictures = new ArrayList<ImageIcon>();

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
    {

        if (es.showOpenDialog(jPanel1) == JFileChooser.APPROVE_OPTION)
        {
            files = es.getSelectedFile();
            path = files.getAbsolutePath();
            return;
        }

        label.setIcon(pictures.get(WIDTH));
        files = null;
        return;
    }

    private JLabel getLabel(BufferedImage[] images)
    {
        for (int j = 0; j < images.length; j++)
        {
            pictures.add(new ImageIcon(images[j]));
        }
        label = new JLabel(pictures.get(0));
        label.setHorizontalAlignment(JLabel.CENTER);
        return label;
    }

    private JPanel draw()
    {
        JPanel panl = new JPanel();
        for (int j = 0; j < pictures.size(); j++)
        {
            panl.getBorder();
        }
        JPanel panel = new JPanel();
        panl.addAncestorListener(null);
        panl.add(panl);
        return panel;
    }
}

共 (2) 个答案

  1. # 1 楼答案

    很难说,而且很明智

    1)可能没有任何理由动态创建JLabelsJPanels

    2)如果你想在一瞬间只显示一个Image,那么

    3)如果你想显示多个图像(比如说多达20-50个Images),那么使用GridLayoutfor JLabelscontains Icon

    4)如果Images的数量不受限制,那么使用JList

  2. # 2 楼答案

    还不完全清楚您要做什么,您的代码没有按照所示进行编译,而且有点混乱。不过有一些建议:

    draw()中,您正在向自身添加一个JPanel,这不是一个好迹象。然后返回另一个尚未修改的面板。整理一下panelpanl命名来解决这个问题

    getLabel()中,实际上没有在任何地方调用它,返回从第一个图像创建的一个标签。因此,您将只能显示其中一个图像

    jButton1ActionPerformed中,如果用户选择了一个文件,那么您将提前返回,因此将设置路径,但不清楚是否还会发生任何其他情况