如何让用户选择JList?

时间:2017-03-22 23:26:40

标签: java swing jlist joptionpane

我正在努力创建一个程序,使用JSoup从IMDB的250首评级电影(电影,年份,评级)中提取电影信息。我已经设法弄清楚如何在JScrollPane内打印此列表。我还创建了一个单独的ArrayList,其中包含指向每部电影页面的链接。我想要做的是让JList中的每个项目都可选,这样如果用户左键单击一个电影,它将带你到URL。我怎么能这样做?

import org.jsoup.*;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.awt.Dimension;
import java.io.*;
import java.util.*;

import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;

public class MovieList {
    public ArrayList<ArrayList<String>> movieInfo;

    public static void main(String[] args) throws IOException{

        ArrayList<ArrayList<String>> movieInfo = new ArrayList<>();
        ArrayList<String> linkInfo = new ArrayList<>();
        String imdb = "http://www.imdb.com/chart/top?ref_=nv_mv_250_6";
        Document doc = Jsoup.connect(imdb).get();
        Elements title = doc.select("td.titleColumn");
        Elements year = doc.select("span.secondaryInfo");
        Elements rating = doc.select("td.ratingColumn.imdbRating");
        Elements link = doc.select("td.titleColumn a");


        for(Element linkList: link){
            linkInfo.add(linkList.attr("abs:href"));
        }

        int i=0;
        for(Element movieList: title){
            ArrayList<String> movie = new ArrayList<>();
            i++;
            movie.add(i+": "+movieList.getElementsByTag("a").text());
            movieInfo.add(movie);
        }
        int x=0;
        for(Element yearList: year){
            movieInfo.get(x).add(1,yearList.getElementsByTag("span").text());
            x++;
        }
        int y=0;
        for(Element ratingList: rating){
            movieInfo.get(y).add(2,"Rating: "+ratingList.getElementsByTag("strong").text());
            y++;
        }

        DefaultListModel<String> listModel = new DefaultListModel<>();
        for(ArrayList<String> j: movieInfo){
            listModel.addElement(j.toString()+"\n");
        }

        JList<String> jList = new JList<>(listModel);
        JScrollPane scrollPane = new JScrollPane(jList);
        scrollPane.setPreferredSize(new Dimension(575,1080));

        JOptionPane.showMessageDialog(null, scrollPane);


    }

}

1 个答案:

答案 0 :(得分:1)

  

我想要做的是让JList中的每个项目都可以选择,这样如果用户左键单击一个电影,它将带你到URL

How to use list selection listener开始到Selecting items in a list,了解如何检测选择更改

  

它将带您到URL

请参阅How to Integrate with the Desktop Class,了解如何在用户的浏览器中打开网址