//用继承写一个自己的TextArea.
//希望这个程序能帮助你想出更好的方法
import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*;
import java.awt.datatransfer.*; public class NoEditArea extends JTextArea { 
 
 public NoEditArea(String string,int rows,int columns){ 
   
   super(string,rows,columns); 
   addKeyListener(new KeyAdapter(){ 
    
    public void keyTyped(KeyEvent key) { 
     key.consume(); 
    } 
    
    public void keyPressed(KeyEvent key) { 
      
      JTextArea temp = (JTextArea)key.getSource(); 
      int caretPos = temp.getCaretPosition(); 
      switch(key.getKeyCode()) { 
        case(KeyEvent.VK_LEFT):
        case(KeyEvent.VK_BACK_SPACE) : if(caretPos > 0) { temp.setCaretPosition(caretPos - 1); } break; 
        case(KeyEvent.VK_RIGHT) : if(caretPos < temp.getText().length()) { temp.setCaretPosition(caretPos + 1); } break; 
        case(KeyEvent.VK_DELETE):System.out.println("aaa");break;
        default : break; 
     } 
     key.consume(); 
   } 
   
   public void keyReleased(KeyEvent key) {
     key.consume(); 
   } 
  }); 
 } public static void main(String[] args) { 
  JFrame frame = new JFrame("Non-Delete"); 
  JButton pastebutton = new JButton("Paste"); 
  JPanel panel = new JPanel();
  final NoEditArea area = new NoEditArea("can't delete",30,50);   pastebutton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
        Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); 
        Transferable content = cb.getContents(this); 
        try { 
             String s = (String)content.getTransferData(DataFlavor.stringFlavor); 
             area.setText(s); 
        } 
        catch (Throwable exc) { 
           System.err.println(e); 
        } 
      } 
  }); 
  
  panel.add(pastebutton,BorderLayout.NORTH);
  panel.add(area,BorderLayout.CENTER);
  frame.getContentPane().add(panel); 
  frame.setSize(250,100); 
  frame.setVisible(true); 
  frame. addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {System.exit(0);}
  }); }