Spec-Zone .ru
спецификации, руководства, описания, API
|
Если Вы реализуете сокращение, копию и вставку, используя один из текстовых компонентов Swing (текстовое поле, поле пароля, отформатированное текстовое поле, или текстовая область), Ваша работа является очень прямой. Эти текстовые компоненты используют DefaultEditorKit
который обеспечивает встроенные действия для сокращения, копии и вставки. Набор редактора значения по умолчанию также обрабатывает работу запоминания, у какого последнего компонента был фокус. Это означает, что, если пользователь инициирует одно из этих действий, используя меню или эквивалентную клавиатуру, корректный компонент получает действие — никакой дополнительный код не требуется.
Следующий демонстрационный пример, TextCutPaste
, содержит три текстовых поля. Как можно видеть в снимке экрана, можно сократить, скопировать, и вставить к или от любого из этих текстовых полей. Они также поддерживают, перетаскивают и отбрасывают.
TextCutPaste
Вот код, который создает меню Edit присоединением встроенное сокращение, копия, и действия вставки, определенные в DefaultEditorKit
к пунктам меню. Это работает с любым компонентом, который убывает от JComponent
:
/** * Create an Edit menu to support cut/copy/paste. */ public JMenuBar createMenuBar () { JMenuItem menuItem = null; JMenuBar menuBar = new JMenuBar(); JMenu mainMenu = new JMenu("Edit"); mainMenu.setMnemonic(KeyEvent.VK_E); menuItem = new JMenuItem(new DefaultEditorKit.CutAction()); menuItem.setText("Cut"); menuItem.setMnemonic(KeyEvent.VK_T); mainMenu.add(menuItem); menuItem = new JMenuItem(new DefaultEditorKit.CopyAction()); menuItem.setText("Copy"); menuItem.setMnemonic(KeyEvent.VK_C); mainMenu.add(menuItem); menuItem = new JMenuItem(new DefaultEditorKit.PasteAction()); menuItem.setText("Paste"); menuItem.setMnemonic(KeyEvent.VK_P); mainMenu.add(menuItem); menuBar.add(mainMenu); return menuBar; }
Затем мы будем смотреть на то, как выполнить ту же самую функциональность, используя компонент, у которого нет встроенной поддержки DefaultEditorKit
.