swing 重写jTextPane copy事件

来源:互联网 发布:linux 发送http请求 编辑:程序博客网 时间:2024/06/06 02:23
Java代码 复制代码 收藏代码
  1. import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.Dimension;
  4. import java.awt.Frame;
  5. import javax.swing.JTextPane;
  6. public class TestJTextPaneextends Frame {
  7. /**
  8. *
  9. */
  10. private static final long serialVersionUID = -4287324146188872577L;
  11. private BorderLayout borderLayout1 = new BorderLayout();
  12. private JTextPane jTable1;
  13. public static void main(String args[]) {
  14. TestJTextPane myframe = new TestJTextPane();
  15. myframe.setSize(new Dimension(250,250));
  16. myframe.setVisible(true);
  17. }
  18. public TestJTextPane() {
  19. super();
  20. try {
  21. jbInit();
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. private void jbInit()throws Exception {
  27. jTable1 = new JTextPane();
  28. jTable1.setContentType("text/html");
  29. jTable1.setText("<html>http:/:/dfsaaaaaaaaaaaaaaaaajkjkldsj<wbr>/</wbr>akdfjsakljgfdsajlgkdjsakljfldsjalfjdsal</html>");
  30. this.setTitle("Excel Lent JTABLE");
  31. this.setLayout(borderLayout1);
  32. this.setSize(new Dimension(400,300));
  33. this.setBackground(Color.white);
  34. this.add(jTable1, BorderLayout.CENTER);
  35. // 这就是添加复制和粘贴功能的那一行!
  36. JTextPaneAdapter myAd = new JTextPaneAdapter(jTable1);
  37. }
  38. }


Java代码 复制代码 收藏代码
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. import java.awt.datatransfer.*;
  5. import java.util.*;
  6. public class JTextPaneAdapterimplements ActionListener {
  7. private Clipboard system;
  8. private JTextPane textPane;
  9. public JTextPaneAdapter(JTextPane myJTable) {
  10. textPane = myJTable;
  11. KeyStroke copy = KeyStroke.getKeyStroke(KeyEvent.VK_C,
  12. ActionEvent.CTRL_MASK, false);
  13. // 确定复制按键用户可以对其进行修改
  14. // 以实现其它按键组合的复制功能。
  15. textPane.registerKeyboardAction(this, "Copy", copy,
  16. JComponent.WHEN_FOCUSED);
  17. }
  18. /**
  19. * 此适配器运行图表的公共读方法。
  20. */
  21. public JTextPane getTextPane() {
  22. return textPane;
  23. }
  24. /**
  25. * 在我们监听此实现的按键上激活这种方法。 此处,它监听复制和粘贴 ActionCommands。 而且此后复制动作无法执行。
  26. */
  27. public void actionPerformed(ActionEvent e) {
  28. if (e.getActionCommand().compareTo("Copy") ==0) {
  29. String text = textPane.getSelectedText();
  30. if(text.indexOf("/",10) > 0)
  31. {
  32. text = text.replace(" /", "/");
  33. if(text.indexOf("://") >0)
  34. {
  35. StringSelection stsel = new StringSelection(text);
  36. system = Toolkit.getDefaultToolkit().getSystemClipboard();
  37. system.setContents(stsel, stsel);
  38. return;
  39. }
  40. }
  41. StringSelection stsel = new StringSelection(textPane.getSelectedText());
  42. system = Toolkit.getDefaultToolkit().getSystemClipboard();
  43. system.setContents(stsel, stsel);
  44. }
  45. }
  46. }  
原创粉丝点击