相关疑难解决方法(0)

JavaFX:如何在初始化期间从控制器获取阶段?

我想从我的控制器类处理阶段事件(即隐藏).所以我要做的就是通过添加一个监听器

((Stage)myPane.getScene().getWindow()).setOn*whatIwant*(...);
Run Code Online (Sandbox Code Playgroud)

但问题是初始化刚刚开始

Parent root = FXMLLoader.load(getClass().getResource("MyGui.fxml"));
Run Code Online (Sandbox Code Playgroud)

之前

Scene scene = new Scene(root);
stage.setScene(scene);
Run Code Online (Sandbox Code Playgroud)

因此.getScene()返回null.

我自己找到的唯一解决方法是向myPane.sceneProperty()添加一个监听器,当它变为非null时,我得到场景,添加到它的.windowProperty()我的!该死!我最终检索阶段的监听器处理.这一切都以设置所需的听众来举办舞台活动而告终.我认为听众太多了.这是解决我问题的唯一方法吗?

javafx initialization stage javafx-2 javafx-8

83
推荐指数
4
解决办法
12万
查看次数

javafx自动调整大小和按钮填充

我正在尝试使用Javafx制作屏幕键盘进行布局.我正在使用Scene Builder制作FXML文件.

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

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="186.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
  <children>
    <VBox layoutX="0.0" layoutY="0.0" prefHeight="186.0" prefWidth="600.0" rotate="0.0" spacing="2.0">
      <children>
        <HBox minHeight="33.0" prefHeight="33.0" prefWidth="600.0" spacing="2.0">
          <children>
            <Label maxWidth="-Infinity" prefHeight="33.0" prefWidth="35.0" text="Milk" textAlignment="CENTER" />
            <Label maxWidth="-Infinity" prefHeight="33.0" text="Mister" />
            <Label maxWidth="-Infinity" prefHeight="35.0" text="Minimum" />
          </children>
          <padding>
            <Insets left="5.0" />
          </padding>
        </HBox>
        <HBox prefHeight="29.0" prefWidth="600.0">
          <children>
            <Button minWidth="29.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="29.0" text="Esc" textAlignment="CENTER" underline="false"> …
Run Code Online (Sandbox Code Playgroud)

java javafx fxml

6
推荐指数
1
解决办法
3万
查看次数

是否可以在 FXML 中使用算术表达式?

我希望有一个功能可以让我在 FXML 中处理数字。例如,试图定义一个元素的高度等于一个常数,而第二个元素的高度等于这个常数乘以 2(即constant * 2)。是否可以在 FXML 中完成它,或者我是否需要在控制器内部进行这部分视图构建(我想避免)?

java javafx fxml

6
推荐指数
1
解决办法
1985
查看次数

是否可以在javafx中的"fx:define"中使用变量分辨率

我试图用fx:define定义动态评估变量,但我不能从另一个变量得到一个变量,我不知道它是否可能?

<GridPane hgap="${10*m.dp}" vgap="${10*m.dp}" xmlns="http://javafx.com/javafx/8.0.51" xmlns:fx="http://javafx.com/fxml/1">
    <fx:define>
        <Measurement fx:id="m" />
        <!-- This works, but is not what I need -->
        <Double fx:id="width" fx:value="300" />
        <!-- This doesn't work -->  
<!--        <Double fx:id="width" fx:value="${300*m.dp}" /> -->
    </fx:define>
    <padding>
        <Insets bottom="$width" left="$width" right="$width" top="$width" />
    </padding>
    <Text text="hello" />
    <Button GridPane.rowIndex="1" text="button" prefWidth="${300*m.dp}" />
    <Button GridPane.rowIndex="2" text="button2" prefWidth="$width" />
</GridPane>
Run Code Online (Sandbox Code Playgroud)

我想要的是从我的计算dp计算宽度(密度独立像素 - 高清屏幕中的值为1,4K屏幕中为2,宽度为1600px的屏幕上为0.xx).我想要的"宽度"变量在我的实际情况中用于很多组件,这就是为什么我想要一个变量 - 简洁.

运行它的java代码

public class Measurement {
  private double dp;

  public Measurement(){
    Screen primary = Screen.getPrimary();
    dp=primary.getBounds().getWidth()/1920;
  }

  /** …
Run Code Online (Sandbox Code Playgroud)

javafx-8

5
推荐指数
1
解决办法
1106
查看次数

JavaFx 元素,根据窗口大小动态更改大小

我有这个: 在此处输入图片说明 一个带左节点的边框窗格(绿色箭头),里面有按钮(橙色箭头)。

我不能做的是找到一种方法来根据窗口的大小更改 Vbox(绿色段)的尺寸,然后更改按钮(橙色段)的尺寸。(当用户播放窗口大小时)

我更喜欢找到一种方法将参数设置到我的 css 文件中,或者作为最后的手段在我的 fxml 中。

.css 文件:

.left-borderPane{ /*this is style class for Vbox */
/*something so similar: */
-fx-min-width:30% ;
-fx-max-width:30% ;
}

.icon-settings{/*this is style class for buttons*/
-fx-shape:"M72.5,65.9 M90,50c0,8.6-2.5,16.9-7.3,24.1c-0.4,0.6-1,0.9-1.7,0.9c-0.4,0-0.8-0.1-1.1-0.3c-0.9-0.6-1.2-1.8-0.6-2.50zM69.6,50c0,3.2-0.6,6.2-1.8,9.1c-0.3,0.8-1.1,1.2-1.8,1.2c-0.2,0-0.5,0-0.8-0.1c-1-0.4c0.6-0.6,1.4-0.7,2.2-0.4C57.5,14.5,58,15.2,58,16z M35,37H14v26h21V37z M54,20.8l-15,15v28.3l15,15V20.8z";
/*something so similar: */
-fx-min-width:80% ;
-fx-max-width:80% ;
    }
Run Code Online (Sandbox Code Playgroud)

css layout javafx fxml scenebuilder

1
推荐指数
1
解决办法
8460
查看次数

标签 统计

javafx ×4

fxml ×3

java ×2

javafx-8 ×2

css ×1

initialization ×1

javafx-2 ×1

layout ×1

scenebuilder ×1

stage ×1