JavaFX是否提供类似Eclipse Quickfix的东西?这意味着您将鼠标悬停在损坏的东西上,并为其找到了一些可以立即应用的解决方案。我知道有工具提示,但它们只能包含文本,我需要一些可点击的东西。另一种解决方案是类似对话框的东西,但我不想打开另一个窗口。我希望它出现在当前阶段。有什么建议吗?
编辑:为了说明这一点,我想在基于JavaFX的应用程序上采用eclipse快速修复的概念,当鼠标悬停在圆形实例上时,可能会显示“快速修复”。我不想检查任何(java/javafx)源代码。
编辑2:我现在在工具提示上有一个超链接:
HBox box = new HBox();
Tooltip tooltip = new Tooltip();
tooltip.setText("Select an option:");
tooltip.setGraphic(new Hyperlink("Option 1"));
Tooltip.install(box, tooltip);
我现在有三个新问题:
提前谢谢!
可以使用setGraphic()
方法将任何节点添加到工具提示中。下面是一个简单的示例,演示如何使用工具提示实现“快速修复”功能:
import java.util.Random;
import javafx.application.Application;
import javafx.css.PseudoClass;
import javafx.scene.Scene;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class TooltipWithQuickfix extends Application {
@Override
public void start(Stage primaryStage) {
TextField textField = new TextField();
textField.pseudoClassStateChanged(PseudoClass.getPseudoClass("invalid"), true);
textField.setTextFormatter(new TextFormatter<Integer>(c -> {
if (c.getText().matches("\\d*")) {
return c ;
}
return null ;
}));
textField.textProperty().isEmpty().addListener((obs, wasEmpty, isNowEmpty) ->
textField.pseudoClassStateChanged(PseudoClass.getPseudoClass("invalid"), isNowEmpty));
Tooltip quickFix = new Tooltip();
Hyperlink setToDefault = new Hyperlink("Set to default");
Hyperlink setToRandom = new Hyperlink("Set to random");
setToDefault.setOnAction(e -> {
textField.setText("42");
quickFix.hide();
});
Random rng = new Random();
setToRandom.setOnAction(e -> {
textField.setText(Integer.toString(rng.nextInt(100)));
quickFix.hide();
});
VBox quickFixContent = new VBox(new Label("Field cannot be empty"), setToDefault, setToRandom);
quickFixContent.setOnMouseExited(e -> quickFix.hide());
quickFix.setGraphic(quickFixContent);
textField.setOnMouseEntered(e -> {
if (textField.getText().isEmpty()) {
quickFix.show(textField, e.getScreenX(), e.getScreenY());
}
});
VBox root = new VBox(textField);
root.getStylesheets().add("style.css");
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
使用样式表(style.css):
.root {
-fx-alignment: center ;
-fx-padding: 24 10 ;
}
.text-field:invalid {
-fx-control-inner-background: #ff7979 ;
-fx-focus-color: red ;
}
我正在尝试将工具提示放在我的WPF应用程序中禁用的超链接上。超链接嵌入了用于文本参数绑定的TextBlock元素。但是,由于某种原因,工具提示不适用于具有嵌入式TextBlock元素的禁用超链接。以下是一个示例: 这个XAML描述了三个超链接。 第一个超链接已禁用,但没有嵌入TextBlock元素。工具提示显示得很好 第二个超链接具有嵌入的TextBlock元素,但已启用。同样,工具提示显示良好
主要内容:创建超链接,示例类表示类似于JavaFX的网页上的锚链接的超链接。 上面的代码生成以下结果。 创建超链接 以下代码使用默认构造函数创建超链接对象。然后它设置一个作为文本标题,最后添加点击事件处理程序。 实例方法定义超链接的文本标题。超链接类扩展了类,可以为超链接设置字体和填充。 以下代码将图像添加到超链接控件。 示例 更改超链接的字体,如下代码所示 - 上面的代码生成以下结果。
问题内容: 我目前在我的应用程序中添加了一些引导工具提示。 所有的“正常”工具提示都可以,但是当我要使用时,我得到的只是一个空的工具提示。 我的工具提示: 在DOM中,我有: div的内容似乎为空,因此工具提示中没有任何内容可显示。我试图将一些HTML文本直接放在DOM中,例如: 而且有效。 你有好主意吗? 问题答案: html-unsafe指令旨在指出其内容。那这个呢: 然后,在SomeCtrl
我在使用JavaFX时遇到了以下问题。 在Java Scene Builder中使用样式表works重新定义工具提示样式。 在eclipse中重新定义执行时的工具提示样式,在由scene builder生成的FXML文件中包含相同的样式表 不起作用(任何其他属性重定义都起作用)。 使用代码指令在eclipse中使用相同样式表重新定义执行时的工具提示样式: 编辑:换句话说,我想成为一个在FXML文件
当你将鼠标悬停在网页的某个区域时,有很多基于JavaScript的库会显示工具提示。有些相当简单,有些允许工具提示显示用CSS样式设计的超文本标记语言内容。 但是有没有一种方法可以在不使用JavaScript的情况下显示样式化的工具提示?如果您只是使用属性,标记不会被处理(例如
问题内容: 当您将鼠标悬停在网页的特定区域时,有很多基于JavaScript的库会显示工具提示。有些相当简单,有些允许工具提示显示使用CSS样式的HTML内容。 但是有没有一种方法可以显示样式化的工具提示而不使用JavaScript?如果仅使用该属性,则不会处理标签(例如,不会产生换行符)。我正在寻找一种解决方案,该解决方案无需使用任何JavaScript即可显示样式化的HTML内容。 问题答案: