亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rssparser.java

?? Java+XML寫的RSS閱讀器
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
Application運行入口
java RssParser

classname RssParser

名稱:RSS解析器
Version 1.0

Date 2006-06-03
Down www.codefans.net

CopyRight
清華大學數學科學系
數32班
王元濤
2003012142
*/
import java.awt.event.*;
import java.awt.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import java.net.URL;
import java.net.MalformedURLException;
import java.net.URLConnection;
import java.util.*;
import javax.swing.table.*;
import org.w3c.dom.*;
import org.apache.crimson.tree.XmlDocument;
import java.io.*; 
import javax.xml.parsers.*;
import javax.swing.plaf.multi.MultiTreeUI;

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////表現層
public class RssParser extends Applet{//主類
	//全局對象
	static RssParser rssParser;
	static Frame frame;
	static PanelTree pTree;
	static PanelTable pTable;
	static Label status;
	
	//初始化布局
	public void init(){
		setLayout(new BorderLayout());
		pTable = new PanelTable();
		pTree = new PanelTree(pTable);
		status = new Label("Status:");
		add("West", pTree);
		add("Center",pTable);
		add("South",status);
		status.setText("inited");
	}
	
	//程序入口
	public static void main(String[] args){
		frame = new Frame("RssParser");
		rssParser = new RssParser();
		rssParser.init();
		
		frame.addWindowListener(new WindowAdapter()//匿名內部類
		{
			public void windowClosing(WindowEvent e) {//關閉窗口
				System.exit(0);
			}
		}
		);

		frame.add("Center", rssParser);
		frame.setSize(1024, 700);
		frame.show();
	}
}

class PanelTree extends Panel implements MouseListener{//左側的樹

	//全局變量
	public JTree tree;
	public MenuActions popp;
	public RSSNode top;
	PanelTable targetTable;
	
	//構造方法初始化布局
	public PanelTree(PanelTable targetTable){
		this.targetTable=targetTable;
		//添加菜單對象
		popp=new MenuActions(this.tree);
		add(popp);
		//添加樹
		JScrollPane jsp=creatTree();
	//	jsp.setBounds(new Rectangle(0,0,300,650));
		add(jsp);
	}
	
	//創建樹
	public JScrollPane creatTree(){
		//根節點為RSSNode的對象
		top = new RSSNode("MyRSS_root");
		top.type=0;
		try{
			//根據頻道定義文件創建樹內容
			XmlProcessor.opmlRead(top,"opml.xml");
		}catch(Exception e){
			RssParser.status.setText(e.getMessage());
		}
		tree = new JTree(top);
		//監聽鼠標在樹上的動作
		tree.addMouseListener(this);

		//返回帶自動滾動條的樹
		return new JScrollPane(tree,
		ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
		ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
	}
	public void mouseClicked(MouseEvent e){
			TreePath selPath = tree.getPathForLocation(e.getX(),e.getY());
				if(selPath!=null){
					//返回點中的對象
					Object o=selPath.getLastPathComponent();
					//如果是左鍵點擊
					if(e.getButton()==e.BUTTON1){
						//狀態欄輸出RSS的URL
						if(((RSSNode)o).url!=null)
							RssParser.status.setText(((RSSNode)o).url.toString());
						else{
							RssParser.status.setText("feed://about:_root");
						}
					}
					//如果是右鍵
					if(e.getButton()==e.BUTTON3){
						//彈出菜單
						popp.curNode=(RSSNode)o;
						popp.add(popp.popupMenu1);
						popp.popupMenu1.removeAll();
						//添加菜單項
						if(popp.curNode.type==0){
							popp.popupMenu1.add(popp.menuItem1);
							popp.popupMenu1.add(popp.menuItem4);
						}else{
							popp.popupMenu1.add(popp.menuItem2);
							popp.popupMenu1.add(popp.menuItem3);
						}
						//菜單位置與事件發生位置偏差修正,真正顯示
						popp.popupMenu1.show(popp,e.getX(),e.getY()-200);
						//重繪
						popp.repaint();
					}
				}
	}	
	public void mouseReleased(MouseEvent e){}
	public void mouseEntered(MouseEvent e){}
	public void mouseExited(MouseEvent e){}
	public void mousePressed(MouseEvent e){}
}

class PanelTable extends Panel{//右側的表

	//全局變量
	public JTable table;
	public Vector row;
	public DefaultTableModel tableModel;
	String[] tableHeads = {"標題","時間","摘要","來源"};
	
	//構造表
	public PanelTable(){
		tableModel = new DefaultTableModel();
		Vector tableHeadName = new Vector();
		//寫表頭
		for (int i = 0; i < tableHeads.length; i++) {
			tableHeadName.add(tableHeads[i]);
		}
		tableModel.setDataVector(new Vector(),tableHeadName);
		//創建表
		table = new JTable(tableModel);
		//設置表外觀
		table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
		table.setPreferredScrollableViewportSize(new Dimension(700,600));
		table.getColumnModel().getColumn(0).setPreferredWidth(200);
		table.getColumnModel().getColumn(1).setPreferredWidth(120);
		table.setSurrendersFocusOnKeystroke(false);
	//	table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		table.setRowHeight(20);
		//為表加入滾動條
		JScrollPane jsp2=new JScrollPane(table,
		ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
		ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		add(jsp2);
	}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////交互層

class MenuActions extends JPanel implements ActionListener{//菜單

	//全局變量
	public String title;
	public RSSNode curNode;//關鍵變量
	JTree tree;
	public PopupMenu popupMenu1 = new PopupMenu();
	public MenuItem menuItem1 = new MenuItem();
	public MenuItem menuItem2 = new MenuItem();
	public MenuItem menuItem3 = new MenuItem();
	public MenuItem menuItem4 = new MenuItem();

	//構造菜單和菜單項
	public MenuActions(JTree tree) {
		this.tree=tree;
		this.setLayout(null);

		menuItem1.setLabel("添加RSS");
		menuItem2.setLabel("刪除RSS");
		menuItem3.setLabel("顯示RSS");
		menuItem4.setLabel("顯示全部RSS");
		menuItem1.addActionListener(this);
		menuItem2.addActionListener(this);
		menuItem3.addActionListener(this);
		menuItem4.addActionListener(this);
	}
	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equals("添加RSS"))addRss(e);
		if(e.getActionCommand().equals("刪除RSS"))delRss(e);
		if(e.getActionCommand().equals("顯示RSS"))showRss(e);
		if(e.getActionCommand().equals("顯示全部RSS"))showAll(e);
	}


	void addRss(ActionEvent e){//添加RSS
		//清空表
		RssParser.pTable.tableModel.setRowCount(0);
		//彈出對話框,要求輸入RSS的URL,程序自動獲取其名稱
		String url=JOptionPane.showInputDialog("Please input RSS Url:(and then the name will be given)");
		if(url!=null){
			String name="New rssSite";
			RSSNode tmp=new RSSNode(name);
			try{
				//字符串到URL對象的轉換
				tmp.url=new URL(url);
				//設置為臨時類型
				tmp.type=2;
				curNode.add(tmp);
				//加入后自動更新
				XmlProcessor.rssRead(tmp,tree);
			}
			catch(MalformedURLException ex){
				RssParser.status.setText(ex.getMessage());
			}catch(Exception ex2){
				RssParser.status.setText(ex2.getMessage());
			}
		}
	}

	void delRss(ActionEvent e){//刪除RSS
		RssParser.pTable.tableModel.setRowCount(0);
		int i=JOptionPane.NO_OPTION;
		try{//確認刪除
			i=JOptionPane.showConfirmDialog(RssParser.frame,
			"Are you sure to delete "+curNode.name+"?",
			"Confirmer",
			JOptionPane.YES_NO_OPTION);
		}catch(Exception ex){}
		if(i==JOptionPane.YES_OPTION){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产九九视频一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 国产一区二区三区视频在线播放| 国产69精品久久99不卡| 欧美综合久久久| 国产精品卡一卡二| 久久99热狠狠色一区二区| 欧美综合欧美视频| 国产精品高潮呻吟| 国产精品一区二区91| 欧美一区二区在线视频| 一区二区三区免费网站| 成人免费黄色大片| 国产亲近乱来精品视频| 久久精品久久精品| 欧美一区二区三区白人| 亚洲国产精品一区二区久久恐怖片| 国产成人精品免费一区二区| 91麻豆精品国产91久久久更新时间| 亚洲欧洲韩国日本视频| 国产很黄免费观看久久| 2024国产精品| 韩国欧美国产1区| 欧美成人一区二区| 久久成人久久鬼色| 欧美成人a视频| 麻豆极品一区二区三区| 这里只有精品电影| 日韩av中文字幕一区二区三区| 欧美日韩一区二区三区不卡| 一区二区三区高清| 欧美三级在线播放| 亚洲成人综合网站| 91精品一区二区三区在线观看| 亚洲国产精品久久久男人的天堂| 91成人在线精品| 午夜日韩在线电影| 欧美一级高清片在线观看| 另类欧美日韩国产在线| 欧美成人精品3d动漫h| 老司机午夜精品99久久| 精品国产伦一区二区三区观看方式| 久久激情综合网| 国产亚洲成年网址在线观看| 国产精品综合一区二区| 中文字幕一区二区三区精华液| 懂色av一区二区夜夜嗨| 日韩美女视频19| 欧美日韩精品一二三区| 另类小说图片综合网| 国产欧美视频一区二区三区| www.66久久| 午夜欧美在线一二页| 亚洲精品一区二区精华| 成人免费视频一区二区| 亚洲一区二区三区国产| 欧美一区二区播放| 成人精品免费视频| 亚洲福利国产精品| 久久亚区不卡日本| 色菇凉天天综合网| 久久国产婷婷国产香蕉| 亚洲欧美视频在线观看| 欧美一级专区免费大片| 暴力调教一区二区三区| 性久久久久久久久久久久| 久久久久一区二区三区四区| 日本高清不卡视频| 国内精品国产三级国产a久久| 一区视频在线播放| 欧美电视剧免费观看| 91在线精品一区二区三区| 日本强好片久久久久久aaa| 国产日韩三级在线| 91.com在线观看| 色哟哟一区二区| 精品在线免费观看| 亚洲成a人片在线不卡一二三区| 久久久国产精品不卡| 欧美日韩视频一区二区| 成人免费观看av| 国内精品写真在线观看| 亚洲成人在线网站| 亚洲乱码日产精品bd | 欧美色区777第一页| 国产黄人亚洲片| 麻豆国产精品视频| 亚洲成av人片在线观看无码| 亚洲丝袜制服诱惑| 国产精品乱人伦中文| 欧美一级xxx| 欧美日韩国产免费一区二区| 99久久免费精品| 成人综合在线视频| 激情五月婷婷综合| 蜜桃av一区二区| 亚洲成人午夜电影| 夜夜夜精品看看| 亚洲免费在线电影| 亚洲女同女同女同女同女同69| 国产亚洲一区二区三区四区| 精品久久久久久久久久久院品网 | 欧美性大战久久久| 99热99精品| 成人免费va视频| 国产精品69毛片高清亚洲| 毛片av一区二区| 日韩av中文字幕一区二区三区| 亚洲一级二级三级| 亚洲一区在线视频| 亚洲一区自拍偷拍| 午夜精品一区二区三区电影天堂| 一区二区三区四区不卡在线| 一区二区三区美女视频| 亚洲靠逼com| 亚洲一区二区黄色| 日韩在线一二三区| 午夜不卡av免费| 美女一区二区三区| 久久精品国产成人一区二区三区| 久久精品国产亚洲aⅴ| 久久成人av少妇免费| 国产盗摄视频一区二区三区| 国产+成+人+亚洲欧洲自线| 成人av资源在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 不卡在线观看av| 在线日韩国产精品| 91精品国产91久久久久久一区二区| 这里是久久伊人| 国产日韩欧美一区二区三区乱码| 国产精品乱码一区二区三区软件| 综合亚洲深深色噜噜狠狠网站| 亚洲另类在线制服丝袜| 五月激情六月综合| 国产精品自拍一区| 色婷婷亚洲精品| 在线播放视频一区| 国产偷国产偷亚洲高清人白洁| 亚洲欧洲在线观看av| 亚洲五月六月丁香激情| 久久99国产精品久久99| 成人18视频日本| 在线不卡欧美精品一区二区三区| 精品国产一区二区三区不卡| 中文字幕av一区 二区| 亚洲一区在线电影| 久久精品国产第一区二区三区| 成人性视频网站| 欧美精品 日韩| 亚洲国产精品t66y| 男男视频亚洲欧美| 99精品在线免费| 日韩欧美久久一区| 一区二区三区在线视频免费| 狠狠色狠狠色综合系列| 91香蕉视频污在线| 久久免费视频一区| 午夜精品久久久久久久| 懂色av噜噜一区二区三区av| 5858s免费视频成人| 亚洲色图制服丝袜| 国产在线一区观看| 欧美浪妇xxxx高跟鞋交| 国产精品久久久久婷婷二区次| 日韩经典一区二区| 色菇凉天天综合网| 国产精品嫩草影院av蜜臀| 免费精品视频在线| 欧美日韩大陆一区二区| 亚洲同性gay激情无套| 国产激情一区二区三区| 日韩一区二区免费电影| 亚洲五码中文字幕| 一本久久a久久精品亚洲| 国产丝袜在线精品| 久久精品国产澳门| 欧美一区二区三区在线观看视频| 亚洲欧洲在线观看av| 高清免费成人av| 久久综合色综合88| 麻豆91精品91久久久的内涵| 91传媒视频在线播放| 亚洲色图第一区| 99re热视频这里只精品| 国产精品日韩精品欧美在线| 国产呦精品一区二区三区网站| 91精品国产黑色紧身裤美女| 亚洲国产精品嫩草影院| 欧美日韩亚州综合| 午夜精品久久久久久久久| 欧美日韩精品是欧美日韩精品| 一个色在线综合| 精品视频全国免费看| 亚洲午夜免费视频| 欧美日本国产一区| 日本不卡在线视频| 日韩欧美在线综合网| 久久精品国产网站| 久久嫩草精品久久久精品|