だから私の質問はとても簡単です。ではなくの場合、別のクラスのクラス メンバーにアクセスできますが、 の場合はアクセスできないようです。JDK 7u6 (JavaFX 2.2 を使用) を使用します。String
Label
Label
簡単な例。最初のものは機能しますが、2 つ目は機能しません。 foo.label
最初の例では割り当てることができますが、2 番目の例では NullPointer を取得します。foo.label
以下の 2 番目の例で null の理由を説明できる人はいますか?
更新: 元の質問から @FXML 注釈を削除しました。これは、私が抱えていた問題にそれらが必要だとは思わなかったためです。また、 @jewelsea による回答に対する私のコメントを参照してください。最後に、完全を期すために FXML ファイルを追加しました (Q の下部)。
これは機能します:
// Example 1:
public class SampleController implements Initializable {
Foo foo = new Foo();
public void handleButtonAction(ActionEvent event) {
System.out.println("You clicked me!");
foo.label = "Hello World!";
System.out.println(foo.label);
}
@Override public void initialize(URL url, ResourceBundle rb) {
}
}
// Example 1 -- Foo.java:
public class Foo {
public String label;
}
そして、これは機能しません:
// Example 2:
public class SampleController implements Initializable {
Foo foo = new Foo();
public void handleButtonAction(ActionEvent event) {
System.out.println("You clicked me!");
foo.label.setText("Hello World!"); // gives NullPointer exception !!
}
@Override public void initialize(URL url, ResourceBundle rb) {
}
}
// Example 2 -- Foo.java:
import javafx.scene.control.Label;
public class Foo {
public Label label;
}
上記の例のいずれかの FXML ファイルを次に示します。
<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml" fx:controller="javafxapplication4.SampleController">
<children>
<Button layoutX="126" layoutY="90" text="Click Me!" onAction="#handleButtonAction" fx:id="button" />
<Label layoutX="126" layoutY="120" minHeight="16" minWidth="69" fx:id="label" text="hey!" />
</children>
</AnchorPane>