【问题标题】:trigger jLabel mouse event from password field "enter" keypressed (custom button)从密码字段“输入”按键触发 jLabel 鼠标事件(自定义按钮)
【发布时间】:2016-06-15 08:28:14
【问题描述】:

我创建了一个简单的 jForm 登录应用程序。此表单包含两个用于用户名和密码的文本字段以及另一个来自 jLabel 的自定义按钮。在这个按钮中,我编写了所有的事件侦听器,例如 mouseEntered、mouseExited、mousePressed、mouseReleased 和 mouseClicked。我需要在用户输入密码后点击回车时触发这个mouseClicked事件。

我该怎么做?

附:我使用了 Robot 类,它似乎不是一个合适的解决方案。

【问题讨论】:

  • "a simple jForm" J2SE 中没有这样的类。请不要像你的 IDE 那样说话。
  • 顺便说一句 - 请参阅 What is the XY problem? 为此,我将创建一个 ActionListener 可以附加到 JButton JTextField。注意密码控制应该是 JPasswordField ..

标签: java swing netbeans mouseevent


【解决方案1】:

要避免出现JButton,您会遇到很多麻烦。相反,使用JButton 并调用setBorderPainted(false) 以获得JLabel 的外观。然后您可以调用setDefaultButton(),并且按钮“将在根窗格中发生 UI 定义的激活事件(通常是 Enter 键)时激活,无论按钮是否具有键盘焦点。”

JFrame f = new JFrame("ButtonTest");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton b = new JButton(new AbstractAction("Login") {

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println(e);
    }
});
b.setBorderPainted(false);
f.getRootPane().setDefaultButton(b);
f.add(b);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);

【讨论】:

  • 非常感谢您的回答@trashgod。如何摆脱 jButton 的奇怪渐变背景
  • @AdeeshaSavindadeSilva:这是 Mac 的 screenshot 功能,而不是按钮功能。
  • 不在您的图片中。但是我的 java 按钮有渐变背景。我确实使用 jButton1.setBackground(new Color(0, 0, 0, 0)); 删除了它。但这会在图标图像周围形成一个奇怪的边框..
  • @AdeeshaSavindadeSilva:这听起来像是您选择的 L&F 的一个功能。请编辑您的问题,或提出一个新问题,以包含一个minimal reproducible example,以显示您当前的方法。默认按钮是否有效?
猜你喜欢
  • 1970-01-01
  • 2014-01-14
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
相关资源
最近更新 更多