`
乾坤摄
  • 浏览: 3132 次
社区版块
存档分类
最新评论

swing 重写jTextPane copy事件

 
阅读更多
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;

import javax.swing.JTextPane;

public class TestJTextPane extends Frame {
	/**
	 * 
	 */
	private static final long serialVersionUID = -4287324146188872577L;
	private BorderLayout borderLayout1 = new BorderLayout();
	private JTextPane jTable1;

	public static void main(String args[]) {
		TestJTextPane myframe = new TestJTextPane();
		myframe.setSize(new Dimension(250, 250));
		myframe.setVisible(true);
	}

	public TestJTextPane() {
		super();
		try {
			jbInit();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void jbInit() throws Exception {
		jTable1 = new JTextPane();
		jTable1.setContentType("text/html");
		
		jTable1.setText("<html>http:/:/dfsaaaaaaaaaaaaaaaaajkjkldsj<wbr>/</wbr>akdfjsakljgfdsajlgkdjsakljfldsjalfjdsal</html>");
		this.setTitle("Excel Lent JTABLE");
		this.setLayout(borderLayout1);
		this.setSize(new Dimension(400, 300));
		this.setBackground(Color.white);
		this.add(jTable1, BorderLayout.CENTER);
		// 这就是添加复制和粘贴功能的那一行!
		JTextPaneAdapter myAd = new JTextPaneAdapter(jTable1);
	}
}


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.datatransfer.*;
import java.util.*;

public class JTextPaneAdapter implements ActionListener {
	private Clipboard system;
	private JTextPane textPane;

	public JTextPaneAdapter(JTextPane myJTable) {
		textPane = myJTable;
		KeyStroke copy = KeyStroke.getKeyStroke(KeyEvent.VK_C,
				ActionEvent.CTRL_MASK, false);
		// 确定复制按键用户可以对其进行修改
		// 以实现其它按键组合的复制功能。
		textPane.registerKeyboardAction(this, "Copy", copy,
				JComponent.WHEN_FOCUSED);
	}

	/**
	 * 此适配器运行图表的公共读方法。
	 */
	public JTextPane getTextPane() {
		return textPane;
	}

	/**
	 * 在我们监听此实现的按键上激活这种方法。 此处,它监听复制和粘贴 ActionCommands。 而且此后复制动作无法执行。
	 */
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().compareTo("Copy") == 0) {
			String text = textPane.getSelectedText();
			if(text.indexOf("/", 10) > 0)
			{
				text = text.replace(" /", "/");
				if(text.indexOf("://") > 0)
				{
					StringSelection stsel = new StringSelection(text);
					system = Toolkit.getDefaultToolkit().getSystemClipboard();
					system.setContents(stsel, stsel);
					return;
				}
			}
			StringSelection stsel = new StringSelection(textPane.getSelectedText());
			system = Toolkit.getDefaultToolkit().getSystemClipboard();
			system.setContents(stsel, stsel);
		}
	}
}
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics