我正试图从jframe获取一个jbutton。这是我的代码:
JButton button2 = (JButton) frame.getComponentAt(move);
执行此操作时出现此错误: javax.swing.JFrame无法强制转换为javax.swing.JButton
这是两个类层次结构 http://docs.oracle.com/javase/7/docs/api/javax/swing/JButton.html http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html
它们在容器中是相同的,并且getComponentAt在组件级别上。如何从jframe获取按钮?
修改
按下按钮后,我可以按下按钮。我的代码的目的是制作一个游戏,其中计算机将响应用户在网格上的移动,给定的点击,响应点击(好像有两个人在玩,第二个人,计算机) ,点击按钮就像第一个人一样)。我必须找到一种方法来通过代码访问jframe中的按钮。
答案 0 :(得分:3)
你应该给你的JButton类提供一个公共方法,getMyButton()
返回感兴趣的JButton。否则你将试图以一种非常愚蠢和脆弱的方式获得你的参考(正如你所发现的那样)。
在不必获取JButton参考的情况下,可能有更好的方法来执行您尝试的操作,但为了了解这一点,我们需要更好地了解您当前的代码和所需的功能。
修改强>
你在评论中说:
我要做的是找到给定框架和点对象的按钮(移动)。你知道一种方法,我可以在给定点对象的gridlayout上找到一个按钮吗?
此信息应该是您原始问题的一部分,因为它是相关的,事实上我建议您向我们提供更多问题的详细信息。
如果按下该按钮,则可以通过其ActionListener轻松获得对按下按钮的引用。 actionPerformed ActionEvent参数有一个getSource()
方法,它将返回导致ActionListener触发的对象的源。
修改强>
你添加:
按下按钮后,我可以按下按钮。我的代码的目的是制作一个游戏,其中计算机将响应用户在网格上的移动,给定的点击,响应点击(好像有两个人在玩,第二个人,计算机,点击一个按钮)就像第一个人一样)。我必须找到一种方法来通过代码访问jframe中的按钮。
考虑将您的JButton放入某种类型的逻辑网格中,例如数组甚至是二维数组。然后,您可以轻松找到网格上的按下按钮,然后让计算机使用它想要选择的任何下一个按钮。