0

我在互联网上做了一些浏览,发现这段代码显示了如何在 JFrame 中显示多张照片,如下所示。我想要做的是选择一张照片并能够通过单击按钮将其上传到 imgur。我知道如何通过 java 将文件上传到 imgur,但我不知道如何选择一张图片。有人有解决方案吗?

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:/Users/Photos";
    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("png") ) {
            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);
}
}
4

2 回答 2

1

我不知道如何选择一张图片。

  • JList使用 的实例ListSelectionModel来管理其选择。默认情况下,列表选择模型允许一次选择任何项目组合。您可以通过调用列表上的方法来指定不同的选择模式(即单项选择setSelectionMode()) 。

     jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    
  • 要做到这一点,在带有 的项目选择事件中JList,使用ListSelectionListener来选择您的项目。

     jList1.addListSelectionListener(new ListSelectionListener() {
    
            @Override
            public void valueChanged(ListSelectionEvent e) {
             JList jlist = (JList) e.getSource();
             Object curentSelectedObject = jlist.getModel().getElementAt(e.getFirstIndex());
             Object lastSelectedObject = jlist.getModel().getElementAt(e.getLastIndex());
            }
        });
    

使用ListSelectionListener优于使用MouseListenerwith JList。与 不同MouseListener的是,它简单且层次更高,它还有其他两个功能evt.getFirstIndex()evt.getLastIndex()非常有用。

教程资源:

  1. 如何编写列表选择侦听器
于 2013-10-27T16:40:11.093 回答
0

如果您需要获取列表中选择的内容,可以在事件处理程序中使用类似这样的内容:

    ImageIcon selected = (ImageIcon)lsm.getSelectedValue();
    if(selected == null){
         // nothing selected
    }else{
         // something is selected
    }
于 2013-10-27T15:50:36.203 回答