我习惯于用JavaFx编写如下所示的代码,因为这就是我几年前学习的方式。
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.stage.*;
public class test extends Application {
int c=0;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Demo");
Button b = new Button("Click me");
Label l = new Label("Count=" + c);
VBox v = new VBox(20);
v.getChildren().addAll(b, l);
b.setOnAction(event -> {
c++;
l.setText("Count=" +c);
});
primaryStage.setScene(new Scene(v, 300, 300));
primaryStage.show();
}
}
我最近安装了JetBrains IntelliJ IDEA Ultimate Edition 2018.1.6,我发现要打开primaryStage窗口,我需要一个fxml文件。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.GridPane?>
<GridPane alignment="center" hgap="10" vgap="10" xmlns="http://javafx.com/javafx/8.0.121" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Main">
</GridPane>
我必须这么做,
primaryStage.setScene(new Scene(FXMLLoader.load(getClass().getResource("sample.fxml")), 300, 300));
如果我运行第一个代码片段,什么都不会显示。但是如果我用FXMLLoader.load(getClass(). getResources("sample.fxml"))替换VBox v,只会显示一个没有按钮和标签的窗口。有没有一种方法可以忽略fxml文件的使用?或者我可以使用标准的编码方式(第一个代码片段)并让编译器为我将其更改为fxml格式?
这是因为当每个标签是一个像素时,我希望在网格布局中有100x100个标签。因此,在代码中,很容易运行嵌套for循环,以使用二维数组初始化和寻址每个标签。但是在fxml中初始化1000个标签太长、太累而且不合逻辑。
在JetBrains IntelliJ IDEA社区版2017.0.2中,我从未做过这样的事情。当我升级到Ultimate Edition 2018.1.6时,我发现了这些错误。
您完全可以在不使用FXML的情况下将IntelliJ与JavaFX结合使用。
答:考虑到您在创建新的JavaFX项目时从IntelliJ获得的默认设置中引用的代码片段,是的,他们的默认设置使用. fxml
,但不需要使用它。您可以删除该sample.fxml
文件并根据需要重写start
。
旁注:没有什么可以阻止您在同一个项目中同时使用fxml和代码方法,在某些情况下,使用fxml是更好的方法,而在其他一些情况下,最好使用代码。
问:或者我可以使用标准的编码方式(第一个代码片段)并让编译器为我将其更改为fxml格式?
A: 没有办法将Java代码转换为fxml,但正如我已经说过的,这取决于您决定使用哪一个,您甚至可以在同一个项目中同时使用这两个代码。
如何在Spring Boot应用程序中设置活动配置文件。该应用程序将部署在独立的Tomcat中。 我有2个属性文件应用程序-{profile}。属性。
问题内容: 我正在尝试在应用程序启动期间进行设置,但似乎为时已晚,非无头模式已经启动: 除此之外,还有另一种方法让无头为真吗?我不希望在控制台上进行任何配置。 问题答案: 我正在使用一个类,该类在常量(和其他静态代码)中静态加载JFreeChart的不同部分。 将静态加载块移到类的顶部解决了我的问题。 这不起作用: 通过将Java移动到类的顶部,让Java尽早执行该静态块! 当考虑它时,这是完全有
问题内容: 我正在使用logback,并且尝试在Java程序中以编程方式设置日志文件名(类似于以编程方式设置LogbackAppender路径),并且我尝试按以下方法调整该解决方案: 在logback-test.xml中: 然后再次在我的Java程序中: 但是结果是两个日志,一个完整并按我的意愿命名,例如“ 1319041145343.log”,另一个为空并命名为“ log_file_name_I
有没有办法以编程方式自定义这些TextInputLayout属性: textColorHint 彩色口音 颜色控制正常 颜色控制已激活 文本选择句柄 我知道如何使用主题属性对它们进行样式化,但是我正在处理的项目动态地加载颜色信息,据我所知,在运行时无法更改主题/样式值。
问题内容: 有没有一种方法可以通过编程设置属性?似乎没有方法。 明确地说,我不是在谈论视图/窗口小部件样式!我在谈论以下内容: 问题答案: setTypeface是属性textStyle。 正如 Shankar V 添加的那样,要保留以前设置的字体属性,可以使用:
问题内容: 我的问题很简单 如何以编程方式设置我的按钮layout_gravity? 我在互联网上找到了它,但它只是抛出了一个Nullpointer异常: 有什么办法吗? 问题答案: Java Kotlin 有关重力值以及如何设置重力,请检查“重力”。 基本上,您应该选择依赖于父项。可以是等等。