Есть ли простой способ отобразить текст подсказки в JavaFX?
В библиотеке Borland VCL почти все элементы управления имеют свойство подсказки. Во время выполнения, когда вы помещаете курсор мыши на соответствующий элемент управления, при перемещении мыши появляется всплывающее окно с текстом подсказки, которое снова исчезает, как, например, сообщения справки в проводнике Windows и других программах, когда курсор мыши удерживается над кнопкой.,
Есть ли в JavaFX похожая концепция (на самом деле я использую ScalaFX)?
Конечно, я могу создать новую сцену без декораций, добавить слушателей мыши и т. Д., Но она где-то еще не доступна?
2 ответа
Вы можете использовать всплывающую подсказку.
Образец использования
Если вы хотите всплывающую подсказку для элемента управления, например кнопки, установите подсказку:
button.setTooltip(
new Tooltip("Button of doom")
);
В противном случае, для других типов узлов, таких как фигуры, установите всплывающую подсказку:
Circle circle = new Circle(15, 15, 42);
Tooltip.install(
circle,
new Tooltip("Circle of light")
);
Руководство
У Oracle есть учебник, посвященный только подсказкам.
Как вы можете видеть выше, вы можете установить "графику" на всплывающей подсказке, которая может быть изображением (или любым другим узлом), она довольно гибкая.
Стиль подсказок
Другие опции
Если всплывающая подсказка - это не то, что вам нужно, есть другие способы отображения всплывающих окон:
Этот код создает подсказку на основе GRAPHIC. Взгляните на комментарий htmlStr..... вы можете поиграть с ним, а также thisToolTip.setStyle..... и посмотрите, что произойдет. Вы можете изменить стили в htmlStr и строку для setStyle. Однако я не смог сопоставить размер кончика инструмента и панели. Таким образом, есть граница, но я сделал цвет обоих цветов фона в cornsilk. Это создает иллюзию, что границы нет. Но это не правда. Посмотрите код, если вы найдете его полезным, используйте его.
private Tooltip createToolTip(String htmlStr) {
Tooltip thisToolTip = new Tooltip();
// String htmlStr = "<body style=\"background-color:cornsilk; "
// + "border-style: none;\"> <u><b><font color=\"red\">Click Mouse's right button to see options</font></b></u><br><br>(3) Subha Jawahar of Chennai<br> now @ Chennai<br>Female <-> Married <-> Alive<br>Period : 1800 to 2099<br>D/o Dr. Subbiah [2] - <br> <b>Spouse :</b> Jawahar Rajamanickam [7] <br><br><b>Children :</b><br><br>Rudhra Jawahar [9]<br>Mithran Jawahar [10]<br><br></body>\n";
WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
webEngine.loadContent(htmlStr);
thisToolTip.setStyle("\n"
+ " -fx-border-color: black;\n"
+ " -fx-border-width: 1px;\n"
+ " -fx-font: normal bold 12pt \"Times New Roman\" ;\n"
+ " -fx-background-color: cornsilk;\n"
+ " -fx-text-fill: black;\n"
+ " -fx-background-radius: 4;\n"
+ " -fx-border-radius: 4;\n"
+ " -fx-opacity: 1.0;");
thisToolTip.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
thisToolTip.setGraphic(browser);
thisToolTip.setAutoHide(false);
thisToolTip.setMaxWidth(300);
thisToolTip.setGraphicTextGap(0.0);
return thisToolTip;
}