我的应用程序中有两个不同的阶段,即使用相同FXML文件的帮助屏幕.而不是创建2个FXML文件,我想只使用一个,并有两个控制器调用相同的fxml.
唯一的问题是Controller是在FXML文件中分配的.那么,有没有办法在Controller类本身中用代码更改分配的控制器?
我真的想避免重复FXML文件只是为了更改每个文件中的Controller.提前致谢.
我有一个包含许多文本字段和其他控件的锚窗格.我想获取所有控件的值以及它们的名称和id.
例如:如何清除所有文本字段值?
我正在将SceneBuilder与Netbeans的JavaFX库结合使用.我使用Scenebuilder为控制器类创建fxml和netbeans.目标是构建一个相当复杂的应用程序.
我可以启动一个JavaFX应用程序并连接控制器类就好了.但是,当我尝试打开一个新窗口时,我似乎无法将控制器类绑定到新窗口.为了简单起见,我希望新窗口有一个单独的控制器类,因为后端很复杂.
TL; DR - 尝试使用控制器类在JavaFX应用程序上打开一个新窗口.控制器类没有绑定.
代码示例如下
模型类 - 用于启动应用程序的包装器
public class Model extends Application{
public static void main(String[] args){
Application.launch(Model.class, args);
}
@Override
public void start(Stage stage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
stage.setScene(new Scene(root));
stage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
Sample.fxml - 主应用程序的fxml文件
Sample.java - extends Initializable,是Sample.fxml的控制器类.下面是我尝试打开标题为"ServerConfigChooser"的新窗口的代码片段
try{
Parent root = FXMLLoader.load(getClass().getResource("ServerConfigChooser.fxml"));
FXMLLoader loader = new FXMLLoader(getClass().getResource("ServerConfigChooser.fxml"));
ServerConfigChooser controller = new ServerConfigChooser();
loader.setController(controller);
loader.setRoot(root);
Stage stage = new Stage();
stage.setScene(new Scene(root));
stage.show();
} catch (IOException ex)
Run Code Online (Sandbox Code Playgroud)
ServerConfigChooser.java - 实现Initializable
这就是我遇到问题的地方.我不能简单地使用与.fxml文件中的变量相同的fxid声明变量.调用类时,不会触发initialize()方法.
ServerConfigChooser类中构造函数的原因是我无法自动触发initialize()方法.我在构造函数中手动触发. …
我ImageView在使用FXML 加载图像时遇到问题.
我的控制器类:
public class BoxViewController {
@FXML
private Label label_boxID;
@FXML
private ImageView boximage;
public void initData(ObservableList<BoxProperty> observableList,
BoxService sBox,
TableView tableview) {
this.label_boxID.setText(
String.valueOf(this.boxproperty.getPboxid()));
Image image = new Image("boximage.jpg");
this.boximage = new ImageView();
this.boximage.setImage(image);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,使用文本设置标签有效,但图像不会出现在我的ImageView中.对于ImageView,我在FXML文件中添加了一个ID:
<ImageView fx:id="boximage"
disable="false"
fitHeight="150.0" fitWidth="200.0"
layoutX="69.0" layoutY="322.0"
pickOnBounds="true"
preserveRatio="true" />
Run Code Online (Sandbox Code Playgroud)
我很困惑,为什么这不起作用,因为标签工作,但图像不会加载.
我还检查了是否boximage为空,但事实并非如此.也没有例外.
找不到任何关于此的例子.如何在FXML文件中定义常量?
例如(CONTENT_SPACING我想要创建的常量在哪里):
<VBox fx:controller="myapp.Controller" xmlns:fx="http://javafx.com/fxml" alignment="center" spacing="20">
<fx:define>
<Double fx:id="CONTENT_SPACING" fx:value="200"/>
</fx:define>
<VBox fx:id="content" spacing="$CONTENT_SPACING">
<!-- My window contents would go here -->
</VBox>
</VBox>
Run Code Online (Sandbox Code Playgroud)
如果可行,我的代码将在可读性方面受益.谢谢!
如何使用JavaFX CSS创建类似Android TextField的JavaFX TextField?
例如 : 
我已经尝试了很多FX css,但没有达到这样的效果.这里http://jsfiddle.net/QKm37/ CSS存在HTML输入类型,但它不适用于JavaFX SceneBuilder.
例如 : /** Not Exist in JavaFX **/
-fx-border: none;
-fx-background: bottom left linear-gradient(#a9a9a9, #a9a9a9) no-repeat, bottom center linear-gradient(#a9a9a9, #a9a9a9) repeat-x, bottom right linear-gradient(#a9a9a9, #a9a9a9) no-repeat;
我的FXMl上有一个JavaFX TextField控件,看起来像这样......
<TextField fx:id="input_search" onKeyPressed="#keyListener" prefHeight="25.0" prefWidth="197.0" />
Run Code Online (Sandbox Code Playgroud)
我想在用户输入时自动将所有字符更改为大写.
我控制器中的代码:
public void keyListener(KeyEvent event){
//maybe transform the pressed key to uppercase here...
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用构建下一个/上一个窗口TabPane.我决定使用,TabPane因为它很容易在SceneBuilder中使用和设计.在开始FO的应用程序,我用这个隐藏的TabBar的现在-
tabPane.setTabMinHeight(-10);
tabPane.setTabMaxHeight(-10);
Run Code Online (Sandbox Code Playgroud)
TabPane在此之后的外观 -
如您所见,TabBar仍然只有一小部分(在标题栏下方).我怎样才能完全隐藏它,这样我的TabPane看起来就像一个普通的Pane但是它的所有功能都完好无损?
JavaFx/FXML上下文中的"Node"一词是什么意思?如果我搜索这个问题,我发现所有人都在使用"讨论别的东西"一词,但没有解释.例如,这个问题的答案: 如何从控制器类打开JavaFX FileChooser?:
对于场景中的任何节点(例如,根节点;但是使用@FXML注入的任何节点都可以),
chooser.showOpenDialog(node.getScene().getWindow());
节点会是什么,以及如何"注入@FXML"?
在JavaFX中,Control的子类有一个tooltip属性,这意味着可以使用FXML以声明方式添加Tooltip:
<CheckBox fx:id="someCheckBox" mnemonicParsing="false" text="Do It?">
<tooltip>
<Tooltip text="Whether or not to do it."/>
</tooltip>
</CheckBox>
Run Code Online (Sandbox Code Playgroud)
这是可能的,因为CheckBox是Control的子类.
但是,我希望能够使用FXML向任何场景图节点添加工具提示(即无需使用Java以编程方式添加工具提示).