【Java】海大新闻客户端(半成品)

应用名称:海大新闻客户端
用到的知识:Java GUI编程
开发环境:win10+eclipse+jdk1.8

功能说明:从海大官方网站获取新闻信息并在java中显示出来,点击标题可跳转到相应的网页。这个是大二的时候学校某个团队的招新题目,具体的要求不记得了,好像是这样的,应为当时我还没有接触到java的任何内容所以就没做了。这两天突然想起来然后就想做一下,没想到还是没有做的出来,只做出一个半成品,哭弄了两天了,感觉自己好渣好渣的。。。等以后想到办法,或者有大牛看到这篇东西在算吧再见

这个程序的问题就一个,那就是明明有很多条记录(看效果图下面那张图就是输出到控制台的结果),不知道为什么就只是显示最后一条,试了很多方法都显示不出来,能解决这个问题,那么这个程序就算是完成了!!

效果图:




源代码:

LinkLabel.java

import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.util.LinkedList;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

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

public class LinkLabel extends JFrame implements HyperlinkListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	static Document doc;
	private JEditorPane jEditorPane; // 可编辑各种内容的文本组件,用来显示HTML
	Desktop desktop = Desktop.getDesktop();  
	String str1,str2="";
//初始化界面
	public LinkLabel() {
		jEditorPane = new JEditorPane();
		this.add(jEditorPane);
		jEditorPane.setEditable(false);
		jEditorPane.setContentType("text/html");//文本类型设置为html
		jEditorPane.setText("<html><body><a href='https://www.baidu.com/'>\u767E\u5EA6</a></body></html>\r\nd\r\ns\r\ns\r\ns");
		jEditorPane.addHyperlinkListener(this);//添加链接监听器
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}
	//对网页进行内容获取和过滤
	public void article() {
		try {
			doc = Jsoup.connect("http://www.gdou.edu.cn/").get();//进行操作的网页链接
			Elements ListDiv = doc.getElementsByAttributeValue("class", "fl");//筛选出网页标签内类型为class ,class标志是fl的部分
			for (Element element : ListDiv) {
				Elements links = element.getElementsByTag("a");//获取筛选内容中<a></a>标签也就是网页链接那个标签里的内容
				for (Element link : links) {
					String linkHref = link.attr("href");//筛选出链接
					String linkText = link.text().trim();
					String url="<html><body><a href='"+linkHref+"'>"+linkText+"</a></body></html>";//把获取的链接再次转换为html语句以便在java界面中显示
					str1=url+"\n";
					str2=str1+str2;//由于没有JEditorPane没有add方法逐条添加内容,暂时用字符串叠加代替
					jEditorPane.setText(str2);//设置界面的内容
				}

			}
		} catch (IOException e) {
			e.printStackTrace();
			 System.out.println("error");
		}
	}
//添加事件,若点击链接就会获取链接并打开默认的浏览器转到相应的网页去
	public void hyperlinkUpdate(HyperlinkEvent e) {
		if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
			try {
				 URI uri = new URI(e.getURL().toString());
				 desktop.browse(uri);
			} catch (Exception ex) {
				ex.printStackTrace();
				System.err.println("connection error");
			}
		}
	}
}

GdouNews.java

public class GdouNews {

	public static void main(String[] args) {
		LinkLabel linkLabel= new LinkLabel(); 
		linkLabel.article();
		linkLabel.setBounds(300, 250, 600, 400);
		linkLabel.setTitle("海大新闻客户端");
		linkLabel.setVisible(true);
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值