鼠标输入时未显示工具提示

时间:2013-12-16 19:27:11

标签: button javafx-2 tooltip mouseenter

我正在尝试在按钮上显示MouseEnter事件的工具提示,但它没有显示。我不明白我的代码有什么问题。

这是我的fxml文件,其中我使用按钮并添加MouseEnter事件。

<ToolBar fx:id="logViewerToolBar" layoutX="66.0" layoutY="9.0" opacity="1.0" prefWidth="148.0">
                              <items>
                                <Button id="loadlogearlierbtn" fx:id="loadLogEarlierBtn" mnemonicParsing="false" mouseTransparent="true" onMouseEntered="#loadLogEarlierMouseEntered" onMouseExited="#loadLogEarlierMouseExited" prefWidth="35.0" styleClass="imgbtn" text="">
                                  <stylesheets>
                                    <URL value="@main.css" />
                                  </stylesheets>
                                </Button>
                                <Button id="loadlogtadaybtn" fx:id="loadLogTodayBtn" mnemonicParsing="false" onMouseEntered="#loadLogTodayMouseEntered" onMouseExited="#loadLogTodayMouseExited" prefWidth="35.0" styleClass="imgbtn" text="">
                                  <stylesheets>
                                    <URL value="@main.css" />
                                  </stylesheets>
                                </Button>
                                <Button id="searchlogbtn" fx:id="btnFind" mnemonicParsing="false" onMouseEntered="#findLogMouseEntered" onMouseExited="#findLogMouseExited" prefWidth="35.0" styleClass="imgbtn" text="">
                                  <stylesheets>
                                    <URL value="@main.css" />
                                  </stylesheets>
                                </Button>
                              </items>
                            </ToolBar>  

这是我的控制器类。

@FXML
public void findLogMouseEntered(MouseEvent event)
{      
    btnFind.setTooltip(new Tooltip("Search field value in to entire log"));
}

但它仍然没有显示工具提示。当然,这是一个非常简单的问题,但我是javaFx的新手。

我也链接按钮

@FXML
private Button loadLogEarlierBtn,loadLogTodayBtn,btnFind;     

即使以下方式无法正常工作。

<Button id="searchlogbtn" fx:id="btnFind" mnemonicParsing="false" prefWidth="35.0" styleClass="imgbtn" text="">
                                  <tooltip>
                                        <Tooltip text="Search field value in to entire log"/>
                                    </tooltip>
                                    <stylesheets>
                                    <URL value="@main.css" />
                                  </stylesheets>

                                </Button>

请给我提示或参考。

2 个答案:

答案 0 :(得分:1)

将setTooltip(...)放在initialize(...)方法中,或者在FXML中初始化工具提示。

编辑:这是一个完整的例子:

import java.io.IOException;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class ButtonWithTooltipExample extends Application {

    @Override
    public void start(Stage primaryStage) throws IOException {
        Scene scene = new Scene(FXMLLoader.<Parent>load(getClass().getResource("ButtonWithTooltip.fxml")), 200, 100);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

ButtonWithTooltip.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Tooltip?>

<BorderPane xmlns:fx="http://javafx.com/fxml">
    <center>
        <Button text="Click Me">
            <tooltip>
                <Tooltip text="This is a button. Click on it."/>
            </tooltip>
        </Button>
    </center>
</BorderPane>

您不需要onMouseEntered或onMouseExited - 工具提示可以解决此问题。

答案 1 :(得分:0)

不太确定,但我认为添加title="here goes the title"应该可以解决问题。

希望这会有所帮助