`
flyPig
  • 浏览: 139871 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

浏览器地址栏swing版

阅读更多
   浏览器的地址栏一般带有输入网址的记忆功能,输入首字母,就会出现以它开头的所有曾使用记录。在swing中也能很容易的实现这个功能。
   对于这个功能,可以分解成几个步骤:输入-->响应并弹出提示-->选择或继续输入。为防止重复的保存,直接用Set保存所有输入。显示提示的组件可以用JList外面套上1个JWindow.再加上鼠标响应和输入响应,基本就完成了。
   用户的所有输入由addCompletion()方法加入到Set中去,这个动作可以由CompletableJTextField上触发Enter快捷键响应,或者由其他的自定义动作实现,取决于你的需求。用户无论输入或者删除一个字母,后台都会根据输入匹配Set中保存的数据,然后将所有匹配条目放到Jlist中由JWindow显示出来。
  如果要看起来更好看,可以在JWindow上setBorder(xx),比如设置一个带阴影层次效果的setBorder(roundedShadowBorder);
  如果要更精细一些,可考虑为JList添加上移、下移和回车事件响应,这样就跟浏览器的地址栏完全一样了。

public class CompletableJTextField extends JTextField implements
		ListSelectionListener {
	private static final long serialVersionUID = 1L;
	JList completionList;
	DefaultListModel completionListModel;
	JScrollPane listScroller;
	JWindow listWindow;	
	Set<String> completions;

	public CompletableJTextField(int col) {
		super(col);
		getDocument().addDocumentListener(new Completer());
		completionListModel = new DefaultListModel();
		completionList = new JList(completionListModel);
		completionList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		completionList.addListSelectionListener(this);
		listScroller = new JScrollPane(completionList,
				ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		listWindow = new JWindow();
		listWindow.getContentPane().add(listScroller);
	}
	
	
	public void addCompletion(String s) {
		completions.add(s);
	}

	public void removeCompletion(String s) {
		completions.remove(s);
	}

	public void clearCompletions() {
		completions.clear();
		listWindow.setVisible(false);
	}
	
	public void valueChanged(ListSelectionEvent e) {
		if (completionList.getModel().getSize() == 0) {
			return;
		}
		listWindow.setVisible(false);
		final String completionString = (String) completionList
				.getSelectedValue();
		SwingUtilities.invokeLater(new Runnable(){
			public void run() {
				if(null != completionString) {
					setText(completionString);
				}
			}});
	}
	

	/**
	 * @return the completions
	 */
	public Set<String> getCompletions() {
		return completions;
	}

	/**
	 * @param completions the completions to set
	 */
	public void setCompletions(Set<String> completions) {
		this.completions = completions;
	}
	
	class Completer implements DocumentListener {
		private Pattern pattern;

		private void buildPopup() {
			completionListModel.clear();
			Iterator<String> it = completions.iterator();
			pattern = Pattern.compile(getText() + ".+");
			while (it.hasNext()) {
				String completion = it.next();
				Matcher matcher = pattern.matcher(completion);
				if (matcher.matches()) {
					completionListModel.add(completionListModel.getSize(),
							completion);
				} 
			}
		}

		private void showPopup() {
			if (completionListModel.getSize() == 0) {
				listWindow.setVisible(false);
				return;
			}

			Point los = getLocationOnScreen();
			int popX = los.x;
			int popY = los.y + getHeight();
			listWindow.setLocation(popX, popY);
			listWindow.pack();
			listWindow.setVisible(true);
		}

		private void buildAndShowPopup() {
			if (getText().length() < 1)
				return;
			buildPopup();
			showPopup();
		}

		public void insertUpdate(DocumentEvent e) {
			buildAndShowPopup();
		}

		public void removeUpdate(DocumentEvent e) {
			buildAndShowPopup();
		}

		public void changedUpdate(DocumentEvent e) {
			buildAndShowPopup();
		}

	}

}
分享到:
评论

相关推荐

    java浏览器+swing嵌套网页+源码免费

    6. **界面优化**:可能包括添加前进、后退按钮,刷新功能,以及地址栏等常见浏览器元素,提升用户体验。 这个项目的源码是一个很好的学习资源,可以帮助开发者了解如何在Java Swing应用中集成Web浏览功能。通过研究...

    一个简单的HTML浏览器.zip_applet_html 浏览器_java Applet_java 浏览器_swing

    Swing库则被用来构建浏览器的用户界面,比如地址栏、前进/后退按钮、网页内容的展示区域等。 关于标签,“applet html_浏览器”指出了这个项目涉及到的两个关键概念:Java Applet和HTML浏览器。Applet是Java在Web...

    山寨版植物大战僵尸源码0_01beta版

    《山寨版植物大战僵尸源码0_01beta版》是一个非常适合初学者研究的游戏开发项目,它基于Java编程语言,提供了完整的源代码,为想要学习Java游戏开发的程序员提供了宝贵的实践资源。Java作为一种广泛使用的面向对象...

    一个简单的web浏览器源码(java版)

    1. **用户界面**:可能使用Java Swing或JavaFX库来创建GUI,包括地址栏、前进/后退按钮和网页显示区域。 2. **网络请求**:利用`java.net.URL`和`java.net.HttpURLConnection`类进行HTTP请求,获取网页内容。 3. **...

    java浏览器

    开发者会选择其中一个来构建浏览器的界面元素,如地址栏、菜单、按钮等。 3. **URL和URLConnection**:Java提供了`java.net.URL`和`java.net.URLConnection`类用于处理网络资源。通过这两个类,开发者可以建立到...

    java编写的简单浏览器

    这些元素可以用JavaFX或Swing的组件如TextField(地址栏)、Button(按钮)和WebView(JavaFX中用于显示网页的组件)来实现。 地址栏的事件监听器会捕获用户的输入,当用户点击“Go”按钮时,浏览器将解析输入的URL...

    java 制作的一个简单的浏览器

    这个浏览器能够接收用户在地址栏输入的正确URL,并加载显示对应的网页内容。我们将分析实现这一功能所需的关键技术和步骤。 【正文】: 1. **Java基础知识**: Java是一种面向对象的、跨平台的编程语言,以其“一...

    java简易浏览器实现

    XUL文件可以包含浏览器的地址栏、书签、后退/前进按钮等元素。 3. **JavaScript和CSS**:JavaScript文件可能用于处理用户交互逻辑,如地址栏的自动补全、页面导航等。CSS文件则负责定义界面的样式和布局。 4. **...

    Java简单浏览器源代码

    - `JTextField`: 用于输入URL,作为地址栏。 - `JLabel`: 显示页面标题和其他信息。 2. **HTTP协议与Socket编程**: 浏览器的核心功能之一是向服务器发送HTTP请求并接收响应。Java中的`java.net.Socket`类提供了低...

    Java浏览器

    Java浏览器可能使用JavaFX来构建其图形用户界面(GUI),包括地址栏、前进/后退按钮、书签等元素。 2. **Swing**:虽然JavaFX是现代的GUI库,但老版本的Java浏览器可能使用了Swing组件来构建UI。Swing也是Java的...

    基于java的浏览器的设计与实现课程设计.pdf

    然后,利用Eclipse的Swing库来构建用户界面,包括地址栏、前进/后退按钮、页面显示区域等元素。网络编程方法则涉及如何发送HTTP请求并接收响应,解析HTML内容并展示在浏览器窗口中。 总的来说,这个课程设计通过...

    Java swing实现简单的浏览器源码免费分享.zip

    在这个项目中,可能有多个`JPanel`来分别管理地址栏、网页显示区域等。 2. **JButton与ActionListener**: - `JButton` 用于创建按钮,例如"前进"、"后退"、"刷新"等操作。每个按钮需要添加`ActionListener`来处理...

    基于java开发的网页浏览器

    在开发基于Java的网页浏览器时,Swing可以用来构建浏览器的基本框架,如地址栏、前进/后退按钮、页面视图等。 2. **JavaFX**: JavaFX是另一个用于创建现代桌面应用的Java库,它提供了更丰富的视觉效果和更好的性能...

    java仿浏览器

    5. **DocumentListener**:为了实现实时的URL预览(如浏览器地址栏的自动补全功能),我们可以为地址栏的`JTextField`添加`DocumentListener`。当用户在地址栏输入时,监听器可以检查输入的内容,并根据历史记录或...

    用java编写的浏览器

    开发者可能选择其中一个来构建浏览器的界面部分,包括地址栏、前进/后退按钮、书签、选项卡等。 2. **网络编程**:Java的`java.net`包提供了处理HTTP、HTTPS协议的基础,这对于浏览器来说至关重要。必须理解和使用`...

    Java_WebBrowser.rar_Java Web Browser_java webbrows_java 浏览器_web浏

    6. **用户界面设计**: 使用Java Swing或JavaFX创建浏览器的界面,包括地址栏、前进/后退按钮、刷新按钮等。Swing组件如JButton、JTextField等将被用到。 7. **网页解析**: 虽然JEditorPane能处理基本的HTML,但复杂...

    java课程设计-网页浏览器

    - **Swing或JavaFX**:Java提供了Swing和JavaFX两个图形用户界面库来创建浏览器的界面组件,如地址栏、前进/后退按钮、书签、页面加载进度条等。 - **事件处理**:实现用户交互,例如,当用户在地址栏输入URL时...

    史上最简单的 java 自制浏览器(源码)

    在我们的简易浏览器中,SWT用于构建浏览器的基本组件,如地址栏、浏览区域以及可能的菜单和按钮。 在浏览器的核心功能方面,它需要能够解析和渲染HTML内容。Java本身并不直接支持HTML解析,但可以借助第三方库如...

    java实现的浏览器

    - 地址栏:输入URL,解析并加载页面。 - 历史记录:保存用户的浏览历史,方便回溯。 - 书签管理:保存用户喜欢的网页链接。 - 下载管理:处理文件下载,提供进度反馈。 - 设置:允许用户自定义浏览器的偏好设置,如...

Global site tag (gtag.js) - Google Analytics