swing 重写jTextPane copy事件
来源:互联网 发布:linux 发送http请求 编辑:程序博客网 时间:2024/06/06 02:23
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Frame;
- import javax.swing.JTextPane;
- public class TestJTextPaneextends 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.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 JTextPaneAdapterimplements 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;
- }
-
- 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);
- }
- }
- }