Java 为什么我不能在mouseEntered方法中获取JButton的名称?
我在表单上有一个按钮,我想检测鼠标是否在按钮上方。如果按钮位于表单上方,我希望闪烁一个背景颜色为完全红色的JLabel,以指示停止或警告或类似内容 e.getComponent()返回调用组件,因此在本例中,is应该是Save Jbutton。但是名称是空的 当我有了这个名字后,我会检查source.equals(myButton)是否正确,然后将标签放在JFrame上 代码:Java 为什么我不能在mouseEntered方法中获取JButton的名称?,java,Java,我在表单上有一个按钮,我想检测鼠标是否在按钮上方。如果按钮位于表单上方,我希望闪烁一个背景颜色为完全红色的JLabel,以指示停止或警告或类似内容 e.getComponent()返回调用组件,因此在本例中,is应该是Save Jbutton。但是名称是空的 当我有了这个名字后,我会检查source.equals(myButton)是否正确,然后将标签放在JFrame上 代码: getName()不是按钮的标签,您需要调用getText()。 e、 g 此外,如果要将标签文本与按钮本身进行比较,
getName()
不是按钮的标签,您需要调用getText()
。e、 g 此外,如果要将标签文本与按钮本身进行比较,则需要与标签进行比较:
// wrong
System.out.println("entered:" + source.getName());
if (source.equals("btnSave")) {
// right
System.out.println("entered:" + source.getText());
if (source.getText().equals("btnSave")) {
编辑
我没注意到你没有公布消息来源。在源对象上运行特定于JButton
的方法之前,需要将其显式转换为正确的类,如下所示:
final JButton source = (JButton) e.getComponent();
什么时候设置JButton的名称?如果直接打印JButton的getName()方法返回的值,会发生什么?
// wrong
System.out.println("entered:" + source.getName());
if (source.equals("btnSave")) {
// right
System.out.println("entered:" + source.getText());
if (source.getText().equals("btnSave")) {
final JButton source = (JButton) e.getComponent();