gpt4 book ai didi

Java回车键和提交按钮一样吗?

转载 作者:行者123 更新时间:2023-12-01 19:35:52 25 4
gpt4 key购买 nike

该程序应该做的是用回车键模仿“旋转”按钮。该程序可以工作并且不会崩溃,但 Eclipse 控制台给我一个“线程“AWT-EventQueue-0”中的异常 java.lang.ClassCastException:javax.swing.JTextField 无法转换为 javax。 swing.JButton”错误。

//.. gui code
spin = new JButton("Spin");
bet = new JTextField("");

play p = new play();
spin.addActionListener(p);
keys k = new keys();
bet.addKeyListener(k);
}

private class play implements ActionListener{
public void actionPerformed(ActionEvent e) {
JButton src = (JButton) e.getSource();
if(src.equals(spin)) {
//do something
}
}

private class keys implements KeyListener{
@Override
public void keyTyped(KeyEvent e) {
char c= e.getKeyChar();
if(c == KeyEvent.VK_ENTER) {
spin.doClick();
}
}
//.. the other override methods
}

编辑

  • 还有 2 个按钮,我只是没有包含它们,因为它们运行良好且功能不同。
  • JTextField 有一个 KeyListener,因为我从字母中过滤掉数字,这样我就可以使用该事件。不能让用户用字母下注吗?

最佳答案

我猜测您的 ActionListener 正在接收来自多个对象的事件,其中之一是 JTextField。当您尝试将此对象转换为 JButton 时,会发生异常:

(JButton) e.getSource();

可能有更好的解决方案,但从您向我们展示的情况来看,防止异常的最简单方法是在转换之前检查生成事件的对象是否是 JButton 的实例:

private class play implements ActionListener{
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
// Check type before casting
if (src instanceof JButton) {
JButton bsrc = (JButton)src;
if(bsrc.equals(spin)) {
//do something
}
}
}
}

关于Java回车键和提交按钮一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59221338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com