2009-02-05 35 views
5

Tôi đang triển khai trình soạn thảo văn bản dựa trên JTextPane. Hiện tại, khi tôi có một đoạn văn bản đã chọn, nhấn phím TAB sẽ xóa văn bản đã chọn. Tôi muốn thay đổi hành vi này sao cho TAB sẽ thụt lề văn bản đã chọn.Ghi đè hành vi mặc định của TAB trong JTextPane

Làm thế nào để đi về nó?

Trả lời

5

Something dọc theo dòng:

public void keyPressed (KeyEvent event) { 
     switch (event.getKeyCode()) { 
      case KeyEvent.VK_TAB : 
       insertTabChar (event.isShiftDown()); 
       event.consume(); 
       break; 
      case KeyEvent.VK_ENTER : 
       snapshot(); 
       insertNewLine(); 
       event.consume(); 
       break; 
     } 
    } 

Bạn có một số lớp học trên mạng mà chỉ rằng, giống như this one làm.

Đặc biệt, chức năng

/** 
    * manage keyboard tabbing, implementing blockindent. 
    * @param isUnindent 
    */ 
    private void insertTabChar (boolean isUnindent) { 

     snapshot(); // snapshot current setup 

     if (isSelection) { // blockindent 

có thể làm chỉ là những gì bạn cần.

+0

Tôi phải làm điều đó trước đây, có vẻ như ngay từ đây. – geowa4

2

Cách khác là xác định lại hành động cho thành phần JTextArea được liên kết với khóa TAB. Hãy xem ActionMap.

Các vấn đề liên quan