Как создать всплывающие окна в javafx
Я хочу создать всплывающие окна в javafx application.give. Мне нужна идея.
![enter image description here]()
когда я нажимаю кнопку проверки, открываю всплывающие окна.
как это сделать?
Ответы
Ответ 1
Вы можете либо создать новый Stage
, добавить в него свои элементы управления, либо если вам нужен POPUP как Dialog
, то вы можете использовать DialogsFX или ControlsFX (требуется JavaFX8)
Для создания нового этапа вы можете использовать следующий фрагмент
@Override
public void start(final Stage primaryStage) {
Button btn = new Button();
btn.setText("Open Dialog");
btn.setOnAction(
new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
final Stage dialog = new Stage();
dialog.initModality(Modality.APPLICATION_MODAL);
dialog.initOwner(primaryStage);
VBox dialogVbox = new VBox(20);
dialogVbox.getChildren().add(new Text("This is a Dialog"));
Scene dialogScene = new Scene(dialogVbox, 300, 200);
dialog.setScene(dialogScene);
dialog.show();
}
});
}
Если вы не хотите, чтобы он был modal
(заблокируйте другие окна), используйте:
dialog.initModality(Modality.NONE);
Ответ 2
Класс Popup может быть лучше, чем класс Stage, в зависимости от того, что вы хотите. Этап либо модальный (вы не можете нажимать на что-либо еще в своем приложении), либо он исчезает, если вы щелкните в другом месте вашего приложения (потому что это отдельное окно). Всплывающее окно остается сверху, но не модально.
См. этот Пример всплывающего окна.
Ответ 3
Вы просмотрели ControlsFx Popover control.
import org.controlsfx.control.PopOver;
import org.controlsfx.control.PopOver.ArrowLocation;
private PopOver item;
final Scene scene = addItemButton.getScene();
final Point2D windowCoord = new Point2D(scene.getWindow()
.getX(), scene.getWindow().getY());
final Point2D sceneCoord = new Point2D(scene.getX(), scene.
getY());
final Point2D nodeCoord = addItemButton.localToScene(0.0,
0.0);
final double clickX = Math.round(windowCoord.getX()
+ sceneCoord.getY() + nodeCoord.getX());
final double clickY = Math.round(windowCoord.getY()
+ sceneCoord.getY() + nodeCoord.getY());
item.setContentNode(addItemScreen);
item.setArrowLocation(ArrowLocation.BOTTOM_LEFT);
item.setCornerRadius(4);
item.setDetachedTitle("Add New Item");
item.show(addItemButton.getParent(), clickX, clickY);
Это только пример, но PopOver звучит так, будто он может выполнить то, что вы хотите. Подробнее см. .
Важное примечание: ControlsFX будет работать только на JavaFX 8.0 b118 или новее.
Ответ 4
Посмотрите на jfxmessagebox (http://en.sourceforge.jp/projects/jfxmessagebox/), если вы ищете очень простые всплывающие окна.