2011-01-08 38 views
0

我有這樣的代碼:一個jPopup數控制

jTextArea1.add(jPopupMenu1); 
    jTextArea1.setComponentPopupMenu(jPopupMenu1); 

    jTextField1.add(jPopupMenu2); 
    jTextField1.setComponentPopupMenu(jPopupMenu2); 

和菜單項我有動作:

private void CopyActionPerformed(java.awt.event.ActionEvent evt) { 
    jTextArea1.copy(); 

} 
private void Copy1ActionPerformed(java.awt.event.ActionEvent evt) { 
    jTextField1.copy(); 
} 

現在,我認爲這將是最好使用一個彈出的所有文字組件,如何傳遞關於哪個組件被點擊以複製文本的信息?也許這種情況下有一些更一般的解決方案?

回答

1

應該通過擴展TextAction來創建動作。 TextAction類有一個方法將返回最後有焦點的文本組件。這個動作可以用在彈出菜單上或者添加到菜單欄上的菜單上。所以基本的代碼來創建菜單項是:

JMenuItem copy = new JMenuItem(new CustomAction()); 

但是,它甚至比這更容易,因爲DefaultEditorKit已經提供了一個默認的拷貝操作,所有您需要做的是:

JMenuItem copy = new JMenuItem(new DefaultEditorKit.CopyAction()); 
1

Event類有一個getSource()方法,告訴你哪個組件是事件的原因。

+0

是,但源將是菜單項本身,而不是文本區域。 – camickr 2011-01-09 04:41:35

相關問題