JavaFX Thêm nút tùy chỉnh vào thanh công cụ HTMLEditor tại vị trí xác định
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.ToolBar;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.VBox;
import javafx.scene.web.HTMLEditor;
import javafx.stage.Stage;
public class HtmlEditorExample extends Application {
private final Button btnLink = new Button("Link");
@Override
public void start(Stage primaryStage) {
HTMLEditor htmlEditor = new HTMLEditor();
ToolBar bar = null;
Node node = htmlEditor.lookup(".top-toolbar");
if (node instanceof ToolBar toolBar) {
bar = toolBar;
System.out.println("Size before layout pass: " + bar.getItems().size());
}
VBox vBox = new VBox(htmlEditor);
primaryStage.setScene(new Scene(vBox));
primaryStage.show(); //invokes layout pass
btnLink.setTooltip(new Tooltip("Add a Hyperink"));
btnLink.setOnAction(e -> {
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("HTMLEditor");
alert.setContentText("HTMLEditor Add Button");
alert.show();
});
if (bar != null) {
System.out.println("Size after layout pass: " + bar.getItems().size());
bar.getItems().add(14, btnLink);
System.out.println("Size after layout pass btnLink: " + bar.getItems().size());
}
for (Node node1 : bar.getItems()) {
if (node1 instanceof Button button) {
System.out.println(((Button) node1).getTooltip().getText());
}
if (node1 instanceof ToggleButton toggleButton) {
System.out.println(((ToggleButton) node1).getTooltip().getText());
}
if (node1 instanceof ColorPicker colorPicker) {
System.out.println(((ColorPicker) node1).getTooltip().getText());
}
}
}
public static void main(String[] args) {
launch(args);
}
}
Kết quả:
