![](/img/trans.png)
[英]in java how can i reference the instance define in a nested bxml's “bxml:id…”
[英]Equivalent Java code for BXML
我试图了解Apache Pivot如何根据BXML文件中的定义来构建GUI。 我想确保我了解涉及哪些步骤以及在这些步骤中自动完成的步骤。 为此,我尝试将非常简单的GUI的BXML定义转换为纯Java。 但是,当按照BXML Primer中描述的步骤进行布局时,似乎并没有以相同的方式(或根本没有)进行布局。
这是BXML文件以及用于加载文件的随附类:
example.bxml :
<?xml version="1.0" encoding="UTF-8"?>
<Frame xmlns="org.apache.pivot.wtk">
<TextArea text="Hello World" />
</Frame>
WithBxml.java :
public final class WithBxml extends Application.Adapter {
@Override
public void startup(Display display, Map<String, String> properties) throws Exception {
Frame frame = (Frame) new BXMLSerializer().readObject(WithBxml.class, "example.bxml");
frame.open(display);
}
public static void main(String[] args) {
DesktopApplicationContext.main(WithBxml.class, args);
}
}
这将创建以下预期的GUI:
我正在尝试使用以下代码重新创建相同的GUI。 但是TextArea
不可见,如以下屏幕截图所示。
没有Bxml.java :
public final class WithoutBxml extends Application.Adapter {
@Override
public void startup(Display display, Map<String, String> properties) throws Exception {
TextArea textArea = new TextArea();
textArea.setText("Hello World");
Frame frame = new Frame();
frame.add(textArea);
frame.open(display);
}
public static void main(String[] args) {
DesktopApplicationContext.main(WithoutBxml.class, args);
}
}
为了获得与BXML文件相同的结果,我需要在WithoutBxml
类中进行WithoutBxml
更改?
而不是调用frame.add(textArea);
,我不得不使用frame.setContent(textArea);
将TextArea
添加到Frame
。 加载BXML文件时将调用此方法,因为Window
类使用@DefaultProperty("content")
注释:
@DefaultProperty("content")
public class Window extends Container {
...
}
因此, BXMLSerializer
为BXML文件中<Window>
元素的子元素调用setContent()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.