これは以前stackoverflowで質問されていましたが、私の問題の解決策を見つけることができませんでした。 いくつかのコードをButtonClickイベントから分離する必要があります。ここでは、ButtonClickでノードを動的に作成し、それを親AnchorPaneに追加します。私のノードはボタンですが、これらのボタンのイベントはCommandPatternで処理されます。作成したノードに応じて、別のButtonEventを作成します。文字列からクラスを作成してコマンドパターンを使用する
これまで正常に動作コードは次のとおりです。
@FXML
void addErosionNode(ActionEvent event){
DragNode nde = new DragNode();
/*
id = nde.getId();
name = new String("Erosion");
Erosion cmd;
cmd = new Erosion();
nodeList.add(new NodeList<String, String, Command>(name, id, cmd));
*/
setupNode(nde);
nde.setNodeWithTwoCircles();
}
しかし、私は** /別のメソッド内/間のコードを置きたいので、私はsetupNode(nde, name);
でコードを交換して試すことができますこの方法を使用する:
public void setupNode(DragNode nde, String name){
id = nde.getId();
Class clazz;
className = new String ("application.bvfunc." + type);
//This will be e.g. application.bvfunc.Erosion which is the class I want to use
try {
clazz = Class.forName(className);
} catch (ClassNotFoundException e) {
System.out.println("fail");
}
clazz cmd;
cmd = new clazz();
nodeList.add(new NodeList<String, String, Command>(name, id, cmd));
nde.nodeLayout();
rightAnchor.getChildren().add(nde);
buildDragHandlers();
}
ただし、clazz
はタイプに解決できません。
は、どのように私は私のノードの名前で作成clazz
と
Erosion cmd;
cmd = new Erosion();
を置き換えることができますか?
clazz cmd;
cmd = new clazz();
あなたは(http://stackoverflow.com/questions/6094575/creating-an-instance-using-the-class-name-and-calling [この]を試してくださいました-コンストラクタ)? – 31piy
はい、うまくいきません – Flippy