java - 通过敲击键盘上的 "enter"关闭 JDialog

标签 java swing jdialog

我想通过按键盘上的“enter”键来关闭 JDialog。我怎样才能做到这一点?谢谢你! 笔记: 我想做到这一点,不涉及任何按钮。 谢谢!

最佳答案

一种方法:

  • 你可以给它一个关闭的 JButton
  • 其 ActionListener 具有关闭对话框的代码,
  • 并将该按钮设为对话框根 Pane 的默认按钮。
<小时/>

例如,

myDialog.getRootPane().setDefaultButton(exitButton);
<小时/>

选项二:

  • 使用按键绑定(bind)将 Enter 键绑定(bind)到 AbstractAction 中的退出代码。

例如,

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.*;

public class DemoDialog {
   public static void main(String[] args) {
      JFrame frame = new JFrame("Frame");
      frame.add(Box.createRigidArea(new Dimension(400, 300)));
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);

      final JDialog dialog = new JDialog(frame, "Dialog", true);

      // set binding
      int condition = JPanel.WHEN_IN_FOCUSED_WINDOW;
      InputMap inputMap = ((JPanel) dialog.getContentPane()).getInputMap(condition);
      ActionMap actionMap = ((JPanel) dialog.getContentPane()).getActionMap();
      String enter = "enter";
      inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), enter);
      actionMap.put(enter, new AbstractAction() {

         @Override
         public void actionPerformed(ActionEvent e) {
            dialog.dispose();
         }
      });

      dialog.add(Box.createRigidArea(new Dimension(200, 200)));
      dialog.pack();
      dialog.setLocationRelativeTo(frame);
      dialog.setVisible(true);

   }
}

关于java - 通过敲击键盘上的 "enter"关闭 JDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22325640/

相关文章:

Java:XML 对象

java - 为什么在 Spring Security 中永远不会触发事件 AbstractAuthenticationFailureEvent?

java - 无法将不同的鼠标事件监听器添加到不同的面板

java - EJB 2.1 与 EJB 3.1

java - 将视频从一种格式转码为另一种格式时出错

java - 如何将变量从一个 jframe 传递到另一个 jframe

java GridBagLayout 不工作?

java - 使用 GUI swing JFrame 作为其父级创建 JDialog?

java - 在处理数据之前强制 JDialog 可见?

java - 关闭框架java后重新启用按钮