我想通过按键盘上的“回车”键来关闭jdialog。我该怎么做?谢谢您!注意:我想这样做,不涉及任何按钮。谢谢您!
yrefmtwq1#
首先,我想说的是‘充满鳗鱼的气垫船’的解决方案比这一个更优雅,更符合人类的精神 JDialog 以及 Swing 应用程序编程接口。然而,这里提供一个替代方案是使用 KeyListener 在你的 JDialog 这将做你需要的没有添加一个按钮;
JDialog
Swing
KeyListener
public class Test { public static void main(String[] args) { JDialog jd = new JDialog(); // Add and define the KeyListener here! jd.addKeyListener(new KeyListener(){ @Override public void keyTyped(KeyEvent e) { // Nothing } @Override public void keyPressed(KeyEvent e) { // Nothing } @Override public void keyReleased(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_ENTER){ JDialog d = (JDialog)e.getSource(); d.dispose(); } } }); // End key listener code jd.setVisible(true); } }
重要/相关代码位于两个主要注解之间。这是一个可编译的示例,因此您可以将其复制粘贴到一个新文件中并运行它以查看效果。
v1l68za42#
单向:你可以把它关上他的actionlistener有关闭对话框的代码,并使该按钮成为对话框根窗格的默认按钮。例如。,
myDialog.getRootPane().setDefaultButton(exitButton);
方案二:使用键绑定将enter键绑定到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); } }
2条答案
按热度按时间yrefmtwq1#
首先,我想说的是‘充满鳗鱼的气垫船’的解决方案比这一个更优雅,更符合人类的精神
JDialog
以及Swing
应用程序编程接口。然而,这里提供一个替代方案是使用KeyListener
在你的JDialog
这将做你需要的没有添加一个按钮;重要/相关代码位于两个主要注解之间。这是一个可编译的示例,因此您可以将其复制粘贴到一个新文件中并运行它以查看效果。
v1l68za42#
单向:
你可以把它关上
他的actionlistener有关闭对话框的代码,
并使该按钮成为对话框根窗格的默认按钮。
例如。,
方案二:
使用键绑定将enter键绑定到abstractaction中的退出代码。
例如。,