0
次のコードは、treeviewを表示し、ユーザーが選択した値を出力します。 私は、ChangeLisnerメソッドの引数にオブジェクト "oval"の同じ値を意味する "OK"を出力したいと思います。ChangeListenerでオブジェクトのメッセージを比較する方法
どうすればよいですか?
私は、次のURL
http://blog.professional-webworkx.de/javafx-get-selecteditem-of-treeview/
を参照してください、私は次のようなコードを追加します。
if("TreeItem [ value: SubItem ]".equals(oldVal)){System.out.println("YES");}
else{System.out.println("NO");}"
のSystem.out.printlnの結果は以下の通りです:
TreeItem [値:SubItem]
NO
package app;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.event.EventType;
import javafx.scene.Scene;
import javafx.scene.control.MultipleSelectionModel;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;
public class App extends Application{
@Override
public void start(Stage stage) throws Exception {
TreeItem<String> item = new TreeItem<String>("root");
final TreeView<String> treeView = new TreeView<String>(item);
for(int i=0; i<10; i++) {
item.getChildren().add(new TreeItem<String>("Item" + i));
if(i%5==0) {
TreeItem<String> subItem = new TreeItem<String>("SubItem");
item.getChildren().add(subItem);
subItem.setExpanded(true);
for(int j=0; j<10; j++) {
subItem.getChildren().add(new TreeItem<String>("SubsubItem" + i));
}
}
}
treeView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observable, Object oldVal, Object newVal) {
System.out.println(oldVal);// + " neuer: " + newVal);
if("TreeItem [ value: SubItem ]".equals(oldVal)){System.out.println("YES");}
else{System.out.println("NO");}
}
});
stage.setTitle("TreeView");
stage.setScene(new Scene(treeView, 640, 480));
stage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
ありがとうございます。あなたはとても役に立ちました! – kkj