标签: fxml

如何在fxml项目中使用字体awesome(javafx)

我想在我的项目中使用字体字体真棒,但我不知道如何在我的项目中使用字体真棒.

我找到了一些例子,但它们不能在fxml中使用.

字体真棒javafx

我需要帮助如何使用fxml在我的项目中使用它

谢谢.

java javafx javafx-2 fxml javafx-8

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

如何将FXML Controller1中创建的对象传递给内部FXML控件的Controller2

我有JavaFX 2.0应用程序,它包含两个FXML文件,以及两个用于它们的控制器+一个"主".java文件.

在开始时,FXML1被初始化,如下所示:

public void start(Stage stage) throws Exception {
    stage.setTitle("Demo Jabber JavaFX Chat");

    Parent root = FXMLLoader.load(getClass().getResource("fxml_example.fxml"),
        ResourceBundle.getBundle("fxmlexample.fxml_example"));        
    Scene scene = new Scene(root, 226, 264);
    stage.setScene(scene);
    scene.getStylesheets().add("fxmlexample/fxmlstylesheet.css");
    stage.show();
}
Run Code Online (Sandbox Code Playgroud)

然后,当单击来自scene1的按钮时,在Controller1类的事件处理程序中,我更改scene1 root,以显示用户的新gui-view.在这个控制器中我初始化了一些对象.例如这样:

public class FXMLExampleController {
   //some fields...
   private MySuperObject c;
   @FXML protected void handleSubmitButtonAction(ActionEvent event) {
    //some fields...
    c = new MySuperObject(); //here i initialize my object, i'm interested in
    try {
        c.login(username, password); // some actions with this object, which i need to make.
        Scene cc = buttonStatusText.getScene(); …
Run Code Online (Sandbox Code Playgroud)

javafx-2 fxml

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

我可以从FXML自动生成控制器类吗?

据我所知,当使用FXML描述Java FX场景时,手动编写控制器类,然后可以从.fxml文件中引用它的成员变量和方法.使用时加载场景FXMLLoader,成员变量设置为相应的场景元素,方法自动连接到相应的事件.这是有效的,但是非常麻烦,因为需要在两个地方进行更改,并且任何错误只会在运行时显示.

我见过其他GUI框架,它允许您从场景描述中生成控制器作为抽象类,需要实现它来访问场景元素并处理事件.我的意思的一个例子:

我将创建以下.fxml文件(例如,使用JavaFX Scene Builder):

<AnchorPane ... >
  <children>
     <Button fx:id="button" ... text="Button" onAction="#buttonPressed" />
  </children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)

在我的构建过程中的某个地方,.java将创建以下文件(例如,使用Maven插件):

abstract class TestController {
    protected final Parent root;
    protected final Button button;

    {
        // Load test.fxml file
        // Assign scene elements to root and button
        // Attach event handler to the button that calls buttonClicked()
    }

    protected abstract void buttonClicked(ActionEvent event);
}
Run Code Online (Sandbox Code Playgroud)

然后我可能会多次创建该控制器的具体实现:

final class …
Run Code Online (Sandbox Code Playgroud)

code-generation javafx fxml

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

设置多个styleClass值

如何在JavaFX FXML文件中的节点上设置两个类?

<VBox styleClass="notice high">
Run Code Online (Sandbox Code Playgroud)

这增加了一个值"notice high",而不是两个数值"notice""high".如何添加两个值?

java javafx fxml javafx-8

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

如何在JavaFX场景中定位按钮(或任何GUI元素)?

我试图将UIFX按钮放在UI上的特定位置(特定坐标),但没有任何工作.我猜有一个方法用于此,但我找不到它.

user-interface position javafx button fxml

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

FXML load()期间的JavaFX IllegalAccessException

我有一个由以下代码调用的对话框窗口(DialogController是一个使用模式对话框窗口的辅助类;它主要将控制器引用与其窗口捆绑在一起):

void handleServicesEdit(ActionEvent event) throws IOException {

    DCServRecEditor sre = DialogController.<DCServRecEditor>loadFXML(
            CensusAssistant.RES_FXML_DIALOG_SERVEDIT,
            CensusAssistant.RES_STRING_SERVEDIT,
            this.getDialog());
    sre.setDialogMode(DB.DBEDIT_MODE_EDIT,
                      tbvService.getItems(),
                      tbvService.getSelectionModel().getSelectedIndex(),
                      m_encCal);
    sre.showAndWait();

    sre.release();
    this.updateGUI();
}
Run Code Online (Sandbox Code Playgroud)

我已确认在该FXMLLoader.load()方法期间出现异常.我还确定错误发生在我的initialize()方法中的任何代码都有机会运行之前.我得到的一些堆栈跟踪load()在这里:

java.lang.IllegalAccessException: Class sun.reflect.misc.ReflectUtil 
    can not access a member of class org.kls.md.censusassistant.DCServRecEditor 
    with modifiers ""
file:/D:/Documents/NetBeansProjects/CensusAssistant/dist/run1284250063/CensusAssistant.jar!/org/kls/md/censusassistant/fxml/GUIServRecEditor.fxml:13
  at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:738)
  at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:775)
  at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:180)
  at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:563)
    at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2314)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2131)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2028)
  at org.kls.md.censusassistant.DialogController.loadFXML(DialogController.java:63)
  at org.kls.md.censusassistant.DCMainEditor.handleServicesEdit(DCMainEditor.java:330)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        ...

Caused by: java.lang.IllegalAccessException: Class sun.reflect.misc.ReflectUtil
    can not access a member of class …
Run Code Online (Sandbox Code Playgroud)

javafx javafx-2 illegalaccessexception fxml

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

ProGuard打破了JavaFX应用程序

我正在尝试模糊我的JavaFX应用程序,但它失败了.生成的结果不起作用,我不明白为什么.生成的jar只是失败,因为fxml文件不能再加载所有导入(ClassNotFoundException).

部署工作流程:

  1. 构建可运行的jar(在IntelliJ knwon中作为工件)
  2. 使用ProGuard对jar进行模糊处理
  3. 修复ProGuard无法完成的jar中的一些问题

1)最小的示例应用程序

示例应用程序'GuardTest'是一个IntelliJ项目,由3个类组成.

  • sample.Main:包含应用程序入口点并加载GUI fxml文件'sample.fxml'
  • sample.Controller:'sample.fxml'的控制器类
  • controls.CustomControl:一个从HBox继承的简单javafx控件.这在'sample.fxml'中使用

'sample.fxml'的内容:

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.VBox?>

<?import controls.CustomControl?>

<VBox fx:controller="sample.Controller"
          xmlns:fx="http://javafx.com/fxml">
    <children>
        <CustomControl>
            <children>
                <Button text="Test"></Button>
            </children>
        </CustomControl>
    </children>
</VBox>
Run Code Online (Sandbox Code Playgroud)

2)混淆

现在我使用ProGuard生成从上面的项目生成的jar文件.我使用以下设置:

-target 8

-injars ./out/artifacts/JavaFXApp/JavaFXApp.jar

-outjars ./out/obfuscated/Obfuscated.jar
-ignorewarnings

-printmapping ./out/obfuscated/proguard.map
-dontusemixedcaseclassnames
-dontshrink
-dontoptimize
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers

#-flattenpackagehierarchy
-repackageclasses 'p'
-allowaccessmodification

-libraryjars "<java.home>/lib/rt.jar"
-libraryjars "<java.home>/lib/javaws.jar"
-libraryjars "<java.home>/lib/ext/jfxrt.jar"

-adaptresourcefilecontents **.fxml,**.properties,META-INF/MANIFEST.MF,images/*.jar,publicCerts.store,production.version

-keepattributes javafx.fxml.FXML,Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
-keepclassmembers class * {
    @javafx.fxml.FXML *;
}

-keepclassmembernames public class com.javafx.main.Main, com.nywelt.sharkload.application.Main {
    public static void main(java.lang.String[]);
}
-keepclasseswithmembers …
Run Code Online (Sandbox Code Playgroud)

java javafx proguard classnotfoundexception fxml

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

每个声明都需要@FXML吗?

每个声明都需要@FXML,还是第一个?

换句话说,我应该使用

@FXML
public Label timerLabel = new Label();
@FXML
public TextField mainTextField, projectTextField ;
@FXML
public Button goButton, deleteAllButton ;
@FXML
public ComboBox<String> projectComboBox ;
@FXML
public TableView<Entry> mainTable ;
@FXML
public TableColumn<Entry, String> titleColumn, timeColumn, dateColumn ;
@FXML
public TableColumn<Entry, Boolean> checkColumn, buttonColumn ;
@FXML
public checkBox checkAllCheckBox ;
Run Code Online (Sandbox Code Playgroud)

要么

@FXML
public Label timerLabel = new Label();
public TextField mainTextField, projectTextField ;
public Button goButton, deleteAllButton ;
public ComboBox<String> projectComboBox ;
public TableView<Entry> mainTable ;
public TableColumn<Entry, String> …
Run Code Online (Sandbox Code Playgroud)

javafx fxml fxmlloader

13
推荐指数
2
解决办法
1万
查看次数

如何在窗格内加载fxml文件?

在此输入图像描述

如果我们有一个Stage那么Scene包括2个PaneS中的第一个Pane包含Button与第二Pane是空的,我们可以加载其他FXML这个文件里面第2次Pane

fxml1: VBox
               |_Pane1-->Button
               |_Pane2
///////////////
fxml2: Pane--> Welcome to fxml 2
"when we click the button load the fxml2 inside Pane2 of fxml1"
Run Code Online (Sandbox Code Playgroud)

然后点击

在此输入图像描述


====我终于在尝试后发现了这个作品!====谢谢你们

@FXML Pane secPane;
public void loadFxml (ActionEvent event) {
Pane newLoadedPane =        FXMLLoader.load(getClass().getResource("/application/fxml2.fxml"));
secPane.getChildren().add(newLoadedPane); 
}  
Run Code Online (Sandbox Code Playgroud)

java javafx javafx-2 fxml

13
推荐指数
2
解决办法
2万
查看次数

默认JavaFX-CSS

有没有办法看到JavaFX-Elements的应用CSS规则?或者是否有可用的默认CSS规则的已发布参考?

我想,例如,知道工具栏边框的颜色.

css fxml javafx-8

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