9 ответов:
A
JTextFieldбыл разработан, чтобы использоватьActionListenerкакJButtonесть. СмотритеaddActionListener()методJTextField.например:
Action action = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { System.out.println("some action"); } }; JTextField textField = new JTextField(10); textField.addActionListener( action );теперь событие запускается, когда введите ключ.
кроме того, дополнительным преимуществом является то, что вы можете поделиться слушателем с кнопкой, даже если вы не хотите, чтобы кнопка была кнопкой по умолчанию.
JButton button = new JButton("Do Something"); button.addActionListener( action );обратите внимание, что в этом примере используется
Action, который реализуетActionListenerпотому чтоActionэто новый API с дополнительными функциями. Например, вы можете отключитьActionкоторый отключит событие как для текстового поля, так и для кнопки.
JTextField function=new JTextField(8); function.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //statements!!! }});все, что вам нужно сделать, это addActionListener в JTextField, как указано выше! После того, как вы нажмете введите действие будет выполнено то, что вы хотите за заявление!
добавить событие для
KeyPressed.private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode() == KeyEvent.VK_ENTER) { // Enter was pressed. Your code goes here. } }
вы хотите сделать что-то вроде этого ?
JTextField mTextField = new JTextField(); mTextField.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_ENTER){ // something like... //mTextField.getText(); // or... //mButton.doClick(); } } });
Сначала добавьте команду действия на JButton или JTextField by:
JButton.setActionCommand("name of command"); JTextField.setActionCommand("name of command");затем добавьте ActionListener в JTextField и JButton.
JButton.addActionListener(listener); JTextField.addActionListener(listener);после этого, на вас ActionListener реализации написать
@Override public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if(actionCommand.equals("Your actionCommand for JButton") || actionCommand.equals("Your actionCommand for press Enter")) { //Do something } }
другие ответы (включая принятые) хороши, но если вы уже используете Java8, вы можете сделать следующее (короче, более новым способом):
textField.addActionListener( ae -> { //dostuff } );как сказал принятый ответ, вы можете просто реагировать с
ActionListener, который ловит клавишу Enter.однако мой подход использует преимущества функциональных концепций, которые были введены в Java 8.
Если вы хотите использовать одно и то же действие, например, для кнопки и JTextField, вы можете сделать следующее:
ActionListener l = ae -> { //do stuff } button.addActionListener(l); textField.addActionListener(l);Если требуется дальнейшее объяснение, пожалуйста, дайте мне знать!
Если вы хотите установить Действие кнопки по умолчанию в поле ввода JTextField, вы должны сделать это:
//put this after initComponents(); textField.addActionListener(button.getActionListeners()[0]);это [0], потому что кнопка может иметь много действий, но обычно только один (ActionPerformed).
public void keyReleased(KeyEvent e) { int key=e.getKeyCode(); if(e.getSource()==textField) { if(key==KeyEvent.VK_ENTER) { Toolkit.getDefaultToolkit().beep(); textField_1.requestFocusInWindow(); } }чтобы написать логику для "Enter press" в
JTextField, лучше держать логику внутриkeyReleased()блок вместоkeyTyped()&keyPressed().
Comments