我正在尝试在按钮上显示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>
请给我提示或参考。
答案 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"
应该可以解决问题。
希望这会有所帮助