Когда показывать всплывающее меню для текстового поля, как запретить focusLost текстового поля?
Спасибо, ребята, за ваш ответ. Я буду использовать коды ниже (импорт игнорируется), чтобы показать мою проблему. (для краткости, назовите вышеупомянутое текстовое поле как "field1", назовите нижеследующее текстовое поле как "field2"). В dilaog, когда я ввожу в field1 и нажимаю field2, field2 будет показывать текст в field1. но если я введу в field1 и покажу его всплывающее меню для копирования / вставки, я НЕ хочу показывать текст field1 в field2.
public class MyDialog extends JDialog {
public MyDialog() {
final JTextField name = new JTextField(20);
name.setEditable(true);
final JTextField clone = new JTextField(20);
clone.setEditable(true);
getContentPane().setLayout(new GridLayout(2, 1));
getContentPane().add(name);
getContentPane().add(clone);
name.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
clone.setText(name.getText());
}
});
addPopupMenu(name);
}
private void addPopupMenu(final JTextField name) {
JPopupMenu menu = new JPopupMenu();
JMenuItem copyItem = menu.add(name.getActionMap().get(DefaultEditorKit.copyAction));
copyItem.setText("copy");
JMenuItem pasteItem = menu.add(name.getActionMap().get(DefaultEditorKit.pasteAction));
pasteItem.setText("paste");
name.setComponentPopupMenu(menu);
}
public static void main(String args[]){
MyDialog dlg = new MyDialog();
dlg.setSize(500, 200);
dlg.setVisible(true);
}
}
1 ответ
Это останавливает всплывающее меню от захвата фокуса от текстового поля: menu.setFocusable(false);