如何获取类层次结构的不同侧的属性

时间:2014-04-05 01:49:32

标签: java swing jframe

我正试图从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中的按钮。

1 个答案:

答案 0 :(得分:3)

你应该给你的JButton类提供一个公共方法,getMyButton()返回感兴趣的JButton。否则你将试图以一种非常愚蠢和脆弱的方式获得你的参考(正如你所发现的那样)。

在不必获取JButton参考的情况下,可能有更好的方法来执行您尝试的操作,但为了了解这一点,我们需要更好地了解您当前的代码和所需的功能。


修改
你在评论中说:

  

我要做的是找到给定框架和点对象的按钮(移动)。你知道一种方法,我可以在给定点对象的gridlayout上找到一个按钮吗?

此信息应该是您原始问题的一部分,因为它是相关的,事实上我建议您向我们提供更多问题的详细信息。

如果按下该按钮,则可以通过其ActionListener轻松获得对按下按钮的引用。 actionPerformed ActionEvent参数有一个getSource()方法,它将返回导致ActionListener触发的对象的源。


修改
你添加:

  

按下按钮后,我可以按下按钮。我的代码的目的是制作一个游戏,其中计算机将响应用户在网格上的移动,给定的点击,响应点击(好像有两个人在玩,第二个人,计算机,点击一个按钮)就像第一个人一样)。我必须找到一种方法来通过代码访问jframe中的按钮。

考虑将您的JButton放入某种类型的逻辑网格中,例如数组甚至是二维数组。然后,您可以轻松找到网格上的按下按钮,然后让计算机使用它想要选择的任何下一个按钮。