我正在努力创建一个程序,使用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);
}
}
答案 0 :(得分:1)
我想要做的是让JList中的每个项目都可以选择,这样如果用户左键单击一个电影,它将带你到URL
从How to use list selection listener开始到Selecting items in a list,了解如何检测选择更改
它将带您到URL
请参阅How to Integrate with the Desktop Class,了解如何在用户的浏览器中打开网址