JavaFX:setStrokeType() 使我的程序变得非常慢

标签 java javafx

我刚刚开始使用 JavaFX,setStrokeType() 函数似乎使我的程序运行速度极其缓慢,有时甚至崩溃。

一旦我将 -fx-lines-type:outside; 放入我的 CSS 文件中并使用它,或者使用 label_4.setStrokeType(StrokeType.OUTSIDE); 我的程序运行缓慢,我什至无法单击复选框。

这是我的代码:

#label{ 
    -fx-font:25 Arial;
    -fx-font-weight:900;
    -fx-fill: white;
    -fx-stroke: #989898;
    -fx-stroke-width: 1;
    -fx-stroke-type:outside;
    -fx-effect: dropshadow(three-pass-box, rgba(0,0,0,0.45), 2, 0, 0, 1);
}



public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
         StackPane root = new StackPane();
         Scene scene = new Scene(root, 856, 290);
         primaryStage.setResizable(false);
         root.setId("pane");
         scene.getStylesheets().add("./application/application.css");
         CheckBox check_1 = new CheckBox("Check two");
         check_1.getStyleClass().add("check");
         CheckBox check_2 = new CheckBox("Check one");
         check_2.getStyleClass().add("check");

         Text t= new Text("TEST TEST TEST TEST");
         t.setId("label");
         root.getChildren().addAll(check_1,check_2,t);

         primaryStage.setTitle("Hello world");
         primaryStage.setScene(scene);
         primaryStage.show();
    }

    public static void main(String[] args) {
        try 
        { 
            launch(args);
         } 
         catch (Exception e) 
         { 
            System.out.println(e.toString()); 
         } 
     } 
 }

最佳答案

我认为您正在处理这里的错误。正如您提到的,您的代码运行时会出现响应问题。

我使用 Scene Builder 2.0 进行了一些测试:

<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <children>
        <Text fill="WHITE" layoutX="119.0" layoutY="192.0" stroke="#989898" strokeType="OUTSIDE" text="TEST TEST TEST TEST">
           <font>
              <Font name="Arial Bold" size="36.0" />
           </font>
           <effect>
              <DropShadow color="#00000072" offsetY="1.0" />
           </effect>
        </Text>
   </children>
</Pane>

这需要 100 MB 内存,我可以完美地移动字体大小的 slider 。

但是,如果我将笔划类型设置为 OUTSIDEINSIDE,场景生成器需要 125 MB 内存,并且字体大小 slider 变得无响应(内存跳至 175 MB,CPU 达到一个核心的 100%)。

Stroke problems

请考虑提交错误 report .

关于JavaFX:setStrokeType() 使我的程序变得非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27613987/

相关文章:

java - 如何以编程方式重命名 Eclipse 插件菜单

java - 任务在服务器上运行时 HTTP 请求超时

java - 如何在Javafx中组合字符来创建图标?

java - 添加nio文件复制进度条

java - WELD-001408 不满足的依赖关系 - 找不到根本原因

java - 在 cassandra 主数据库中包含枚举列是否会影响 cassandra 负载平衡?

java - ArrayList无法添加ArrayList,错误java.lang.NullPointerException

java - javafx TextField右对齐问题

JavaFX JFXDatePicker 为特定日期设置颜色

java - 如何使 JavaFX Slider 以离散的步骤移动?