当前位置: 首页 > 知识库问答 >
问题:

在按钮上添加ContextMenu时,JavaFX Scene builder会冻结(然后崩溃)

郎献
2023-03-14

我对场景构建器有意见。我想在按钮上添加ContextMenu。当我在按钮上拖放ContextMenu时,它工作得很好(它出现在Hierarchy选项卡中)。但是当我点击Hierarchy选项卡中预定义的MenuItem(在ContextMenu下)时,Scence Builder会冻结,我不得不关闭它。

谁能帮我一下吗?我知道我可以在Java代码中创建一个ContextMenu,但我想在Scene Builder中创建它(我想让ContextMenu在您悬停在按钮上时弹出,所以我还需要编辑它的触发器--有人能告诉我怎么做吗?)。

描述

问题导致此程序停止与Windows一起工作。失败应用程序的路径:C:\Program Files\SceneBuilder\SceneBuilder.exe

问题签名

另一个进程失败签名2:9431

另一个进程故障签名3:9431E8F7E11013654814C09DEBFAFB79

另一个进程故障特征码4:c858

<?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>

这是Controller.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);
}

}

共有1个答案

漆雕育
2023-03-14

对于同样的问题,我找到了一个非完美的解决方案,尝试从fxml文件中删除fx:controller,并以administrator的身份打开场景生成器。

 类似资料:
  • 我有一个问题,每当我尝试添加任何监听器到我的切换按钮,应用程序甚至没有启动,只是崩溃。在这个代码示例中,我使用SetOnCheckedChangeListener进行了尝试。 当我在没有任何监听器的情况下设置这个值时,它已经崩溃了: mainactivity.java 正如您所看到的,我试图一如既往地将setOnCheckedChangeListener添加到tglButton中。但我不明白为什么

  • 我正在使用android 2.1,希望在Mapsavity上添加一个后退按钮。我在这一页上尝试了什么[在操作栏上显示后退按钮,但应用程序崩溃。我已经按照另一个论坛的建议将extends FragmentActivity替换为AppCompatActivity,但应用程序仍然崩溃。我知道这与操作栏有关,因为如果我删除它,应用程序就会工作。操作栏似乎为空。我被卡住了,已经启动了应用程序数次。下面是错误

  • 我试图建立一个简单的自动点击程序,它有开始/停止按钮和热键(使用Tkinter和Pynput)。每当我用“开始”按钮启动自动点击器时,它都能正常工作,我也能停止它。但是,当我用热键启动自动点击器时,我不能用停止按钮停止它,因为它会冻结整个程序。 这是我的GUI主类: 这些是我的Clicker和键盘课程: 有人知道为什么在使用热键后按下停止按钮时会冻结吗?

  • 我在VS Code中点击了“Kill terminal”后得到了这个错误: “无法解析您的外壳环境:从生成的外壳程序中意外退出代码(代码为空,信号为 SIGSEGV)” 现在,当我点击终端时,我的VSCode会这样做:它会打开窗口大约一秒钟,然后崩溃并消失。 我已经删除了settings.json文件,因为我发现了一个类似问题的帖子。不幸的是,这没有帮助。

  • 本文向大家介绍使用jQuery在移动页面上添加按钮和给按钮添加图标,包括了使用jQuery在移动页面上添加按钮和给按钮添加图标的使用技巧和注意事项,需要的朋友参考一下 创建按钮 data-role=button 给HTML元素添加 data-role="button" 属性。jQuery Moble就会给此元素增强为按钮样式。 Jquery Mobile框架包含了一组最常用的移动应用程序所需的图标

  • 我正在使用tkinter编写一个应用程序,当按下按钮时,该应用程序将连接到sql DB并运行sql查询。我遇到了这样一个问题:当sql querys方法运行时,GUI会说“没有响应”,当它完成时,它会恢复正常。我决定将sql查询放在它自己的线程中,将tkinter的主循环放在它自己的线程中,但它根本不工作。。。? 这是我的GUI,我将主循环放在线程0中 还有这里 我将sql查询运行方法放在线程1中