2014-04-20 36 views
0

我的目標是:具有文本窗格,用戶只能將文本粘貼 (與OS不是一個按鈕!),並且不能在該窗格中鍵入如何使文本窗格接受膏,但塊打字

因爲:不能提交按鈕(這是必須的要求 - 我知道,這是不符合邏輯)

粘貼後:文本窗格中成爲用戶不可編輯,並計劃將在特定改變的背景字符。按鈕後

「明確申請」壓 - 程序清除窗格並返回到初始狀態

我的問題:如何使文本窗格接受膏,但塊打字

到目前爲止,我只發的JPanel用文本窗格本身和所有控件將在不同的JPanel

public class textPanel extends JPanel{ 

private JTextPane text; 

public textPanel() 
{ 
    setLayout(new BorderLayout()); 
    text = new JTextPane();  //12,81 
    text.setBorder(BorderFactory.createLoweredBevelBorder()); 
    add(text,BorderLayout.CENTER); 

    StyledDocument doc = text.getStyledDocument(); 


    setBackground(Color.LIGHT_GRAY); 
    setPreferredSize(new Dimension(1000, 210)); 




}  

感謝您的幫助

+0

您可以嘗試['DocumentListener'](http://docs.oracle.com/javase/tutorial/uiswing/events/documentlistener.html)。 – trashgod

+0

爲什麼不通過'setFocusable(false)'使它無法聚焦。如果組件無法獲得焦點,則無法輸入焦點。 –

+0

我試過setFocusable(false)你不能輸入,但也不能粘貼 –

回答

2

覆蓋public void paste()你的方法。默認情況下,您的JTextPane不可編輯(setEditable(false))。

paste()方法在JTextComponent

public void paste() { 
    if (isEditable() && isEnabled()) { 
     invokeAction("paste", TransferHandler.getPasteAction()); 
    } 
} 

所以你只要把它編輯,叫super.paste(),並設置可編輯=假超級電話後回來。

相關問題