HyperlinkListener

来源:互联网 发布:cydia软件源2016 编辑:程序博客网 时间:2024/05/08 01:52
 

在JEditorPane中引用HyperlinkListener

import java.awt.BorderLayout;
import java.io.File;
import java.io.IOException;

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

public class EditorPaneSample {
public static void main(String args[]) throws IOException {
JFrame f = new JFrame("JEditorPane Sample");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JEditorPane editor = new JEditorPane("text/html",
"<center><a herf=/"/">Three</a><center>");
editor.setEditable(false);

HyperlinkListener hyperlinkListener = new ActivatedHyperlinkListener(f,
editor);
editor.addHyperlinkListener(hyperlinkListener);

JScrollPane scrollPane = new JScrollPane(editor);
f.getContentPane().add(scrollPane, BorderLayout.CENTER);
f.setSize(300, 200);
f.setVisible(true);
}
}

class ActivatedHyperlinkListener implements HyperlinkListener {

JFrame frame;

JEditorPane editorPane;

public ActivatedHyperlinkListener(JFrame frame, JEditorPane editorPane) {
this.frame = frame;
this.editorPane = editorPane;
}

public void hyperlinkUpdate(HyperlinkEvent hyperlinkEvent) {
HyperlinkEvent.EventType type = hyperlinkEvent.getEventType();

if (type == HyperlinkEvent.EventType.ACTIVATED) {
Runnable runner = new Runnable() {
public void run() {
JFileChooser chooser = new JFileChooser(".");
chooser.setAcceptAllFileFilterUsed(false);

int status = chooser.showOpenDialog(editorPane);
if (status == JFileChooser.APPROVE_OPTION) {
File f = chooser.getSelectedFile();
System.out.println(f);
}
}
};
SwingUtilities.invokeLater(runner);
}
}
}

 

 

 

 

改进一下,不同连接触发不同事件:

import java.awt.BorderLayout;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.swing.JEditorPane;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

public class EditorPaneSample {
public static void main(String args[]) throws IOException {
JFrame f = new JFrame("JEditorPane Sample");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JEditorPane editor = new JEditorPane("text/html",
"<center><li><a herf=/"http://three/">Three</a></li><li>"
+ "<a herf=/"http://one/">One</a></li><center>);
editor.setEditable(false);

HyperlinkListener hyperlinkListener = new ActivatedHyperlinkListener(f,
editor);
editor.addHyperlinkListener(hyperlinkListener);

JScrollPane scrollPane = new JScrollPane(editor);
f.getContentPane().add(scrollPane, BorderLayout.CENTER);
f.setSize(300, 200);
f.setVisible(true);
}
}

class ActivatedHyperlinkListener implements HyperlinkListener {

JFrame frame;

JEditorPane editorPane;

public ActivatedHyperlinkListener(JFrame frame, JEditorPane editorPane) {
this.frame = frame;
this.editorPane = editorPane;
}

public void hyperlinkUpdate(HyperlinkEvent hyperlinkEvent) {
HyperlinkEvent.EventType type = hyperlinkEvent.getEventType();

final URL url = hyperlinkEvent.getURL();
if (type == HyperlinkEvent.EventType.ACTIVATED) {
if (url.toString().equals("http://one")) {
Runnable runner = new Runnable() {
public void run() {
JFileChooser chooser = new JFileChooser(".");
chooser.setAcceptAllFileFilterUsed(false);

int status = chooser.showOpenDialog(editorPane);
if (status == JFileChooser.APPROVE_OPTION) {
File f = chooser.getSelectedFile();
System.out.println(f);
}
}
};
SwingUtilities.invokeLater(runner);
} else if (url.toString().equals("http://three")) {
Runnable runner = new Runnable() {
public void run() {
JOptionPane.showMessageDialog(null, "three", null,
JOptionPane.INFORMATION_MESSAGE, null);
}
};
SwingUtilities.invokeLater(runner);
}
}
}
}

 

 

 

原创粉丝点击