JavaFX Scene Builder зависает (а затем падает) при добавлении ContextMenu на кнопку - PullRequest
1 голос
/ 06 февраля 2020

У меня проблема с Scene Builder. Я хочу добавить ContextMenu на кнопку. Когда я перетаскиваю ContextMenu на кнопку, он работает нормально (он отображается на вкладке Иерархия). Но когда я щелкаю по предопределенному MenuItem (под ContextMenu) на вкладке Hierarchy, Scene Builder зависает, и мне приходится его выключать.

Может кто-нибудь помочь мне с этим? Я знаю, что могу создать ContextMenu в Java коде, но я хотел сделать это в Scene Builder (я хочу, чтобы ContextMenu всплывал, когда вы наводите курсор на кнопку, поэтому мне также как-то нужно отредактировать ее триггер - мог кто-нибудь, пожалуйста, скажите мне, как это сделать?).

есть крэ sh

Я использую Java 13 и Scene Builder 11. Как вы видно, программа не отвечает.

Я ценю любую помощь. Спасибо.

РЕДАКТИРОВАТЬ: Это то, что я получил от EventViewer. Я также посмотрел в Scene Builder и в соответствии с «About JavaFX Scene Builder» должен быть файл журнала с именем scenebuilder-11.0.0.log (C: \ Users \ ZD \ AppData \ Local \ Temp \ scenebuilder-11.0.0.log). Но нет лог-файла (даже поиск в проводнике ничего не нашел).

Источник

Двоичный файл платформы OpenJDK

Сводка

Программа перестала отвечать и была остановлена.

Описание

Проблема вызвала то, что эта программа перестала работать с Windows. Путь к ошибочному приложению: C: \ Program Files \ SceneBuilder \ SceneBuilder.exe

Подпись проблемы

Имя события проблемы: AppHangB1

Имя приложения: SceneBuilder.exe

Версия приложения: 11.0.1.0

Метка времени приложения: 5bf25cd1

Подпись сбоя процесса: c858

Тип сбоя процесса: 134217728

Версия операционной системы: 10.0.18362.2.0.0.256.121

Другая сигнатура сбоя процесса 1 : c858a8fd12ba3c4e845361b2e92ff131

Другая сигнатура сбоя процесса 2 : 9431

другая сигнатура сбоя процесса 3 : 9431e8f7e11013654814c09debfafb79

еще одна сигнатура сбоя процесса 4 : c858

Другая сигнатура сбоя процесса 5 : c858a8fd12ba3c4e845361b2e92ff131

A другая сигнатура сбоя процесса 6 : 9431

Другая сигнатура сбоя процесса 7 : 9431e8f7e11013654814c09debfafb79

Больше информации об этой проблеме

Набор ID: 772d0501a48434cd5a8430efceaeecf6 (1910705948434820342)

Это Sample.f xml:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.canvas.Canvas?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.FlowPane?>
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.paint.LinearGradient?>
<?import javafx.scene.paint.Stop?>
<?import javafx.scene.text.Font?>


<StackPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="611.0" prefWidth="990.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Controller">
   <children>
      <AnchorPane id="k" fx:id="mainPanel" prefHeight="602.0" prefWidth="893.0" styleClass="root" stylesheets="@application.css">
         <children>
            <Button fx:id="button" layoutX="14.0" layoutY="14.0" mnemonicParsing="false" onAction="#handleButton" prefHeight="407.0" prefWidth="403.0" styleClass="MyButton" stylesheets="@application.css" text="Button" AnchorPane.bottomAnchor="190.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="573.0" AnchorPane.topAnchor="14.0">
               <font>
                  <Font name="System Bold" size="83.0" />
               </font>
               <textFill>
                  <LinearGradient endX="0.5095238095238095" endY="0.8428571428571429" startX="0.5285714285714286" startY="0.26666666666666666">
                     <stops>
                        <Stop color="BLACK" />
                        <Stop color="#97b83e" offset="0.27147766323024053" />
                        <Stop color="#97b83e" offset="0.5154639175257733" />
                        <Stop color="WHITE" offset="1.0" />
                     </stops>
                  </LinearGradient>
               </textFill>
            </Button>
            <ChoiceBox fx:id="choiceBox" accessibleText="lůůůůůůůůůů" layoutX="428.0" layoutY="14.0" prefHeight="25.0" prefWidth="329.0" />
            <ScrollPane layoutX="428.0" layoutY="49.0" prefHeight="555.0" prefWidth="552.0">
               <content>
                  <FlowPane prefHeight="704.0" prefWidth="727.0">
                     <children>
                        <Canvas fx:id="canvas" height="705.0" onDragOver="#mouseDrag" onMouseClicked="#canvasClicked" onMouseDragged="#mouseDrag" width="727.0" />
                     </children>
                  </FlowPane>
               </content>
            </ScrollPane>
         </children>
      </AnchorPane>
      <AnchorPane fx:id="blackPanel" prefHeight="200.0" prefWidth="200.0" styleClass="blackPanel" stylesheets="@application.css">
         <children>
            <Button fx:id="backBtn" layoutX="356.0" layoutY="208.0" mnemonicParsing="false" onMouseClicked="#backBtnClick" prefHeight="195.0" prefWidth="278.0" styleClass="MyButton" text="Go back">
               <font>
                  <Font name="System Bold" size="48.0" />
               </font>
               <textFill>
                  <LinearGradient endX="1.0" endY="1.0">
                     <stops>
                        <Stop color="#1be3a9" />
                        <Stop color="#083797" offset="1.0" />
                     </stops>
                  </LinearGradient>
               </textFill>
            </Button>
         </children>
      </AnchorPane>
   </children>
</StackPane>

А это Контроллер. java:

public class Controller {

private GraphicsContext gc;
private TranslateTransition tt;

@FXML private Button button;
@FXML private Button backBtn;
@FXML private ChoiceBox<String> choiceBox;
@FXML private Canvas canvas;
@FXML private AnchorPane mainPanel;
@FXML private AnchorPane blackPanel;
@FXML private ContextMenu popup;

public void initialize() {
    choiceBox.setItems(FXCollections.observableArrayList("Výběr1", "Výběr2", "Výběr3", "Výběr4", "Výběr5"));
    gc = canvas.getGraphicsContext2D();

    double x = backBtn.getTranslateX();
    double y = backBtn.getTranslateY();

    tt = new TranslateTransition(Duration.seconds(5), backBtn);
    tt.setToY(-200);
    tt.setToX(-100);

    tt.play();
    tt.setOnFinished((ae) -> {
        backBtn.setTranslateX(x);
        backBtn.setTranslateY(y);
    });

}

@FXML
private void handleButton() {
    mainPanel.setVisible(false);
    blackPanel.setVisible(true);
}

@FXML
private void backBtnClick() {
    tt.stop();
    mainPanel.setVisible(true);
    blackPanel.setVisible(false);
}


@FXML
private void canvasClicked(MouseEvent me) {
    gc.fillOval(me.getX() - 15, me.getY() -15, 30, 30);
}

@FXML
private void mouseDrag(MouseEvent mde) {
    gc.fillOval(mde.getX() - 15, mde.getY() - 15, 30, 30);
}

}

...