JavaFX

別のブログで公開してたものです。
一部をこっちのブログに移行しようと手動で(^^;)移行したものです。

Controllerクラスに次のコードを追加してScene BuilderでAnchorPane(他のコントロールでもいい)の"On Drag Over"と"On  Drag Dropped"にそれぞれhandleDragOverとhandleDroppedを 割り当てる とFinderや エクスプローラーからファイルをドラッグアンドドロップで受け取ることができるようになる。ほかにもドラッグ&ドロップ関係のイベントがあるみたいだけど、これだけでファイルはとりあえず受け取れるようだ。(ほかのイベントはまだ調べていない(^^;))

@FXML
private void handleDragOver(DragEvent event) {
	// ドラッグボードを取得
	Dragboard board = event.getDragboard();
	if(board.hasFiles()) {  // ドラッグされているのがファイルなら
		// コピーモードを設定(これでマウスカーソルが矢印に+のやつになる)
		event.acceptTransferModes(TransferMode.COPY);
	}
}

@FXML
private void handleDropped(DragEvent event) {
	// ドラッグボードを取得
	Dragboard board = event.getDragboard();
	if(board.hasFiles()) {
		board.getFiles().stream().forEach((f) -> {
			System.out.println(f.getPath());
		});
		// ドロップ受け入れ
		event.setDropCompleted(true);
	} else {	// ファイル以外なら
		// ドロップ受け入れ拒否
		event.setDropCompleted(false);
	}
}

このエントリーをはてなブックマークに追加
ブログランキング・にほんブログ村へ
にほんブログ村

別のブログで公開してたものです。
一部をこっちのブログに移行しようと手動で(^^;)移行したものです。

JavaFX Scene BuilderでListViewを追加して
Controllerクラスに↓を追加して、Scene BuilderでListViewのfx:id属性にlistViewを指定する。

@FXML
private ListView<String> listView;

あとは、

listView.getItems().add("hoge”);

でリストに追加できる。まっ、これはとりあえず(^^;)

実際には、

private ObservableList<String> items;

を定義しておいて、initializeあたりで

items = FXCollections.observableArrayList();      
listView.setItems(items);

を追加して、以後、itemsに追加したり削除したりするとリストが更新されるようになります。

つぎに、編集できるようにする。↓を追加。

// 編集可能にする。
listView.setEditable(true);      
listView.setCellFactory(TextFieldListCell.forListView());

これで編集できるようになって、変更した内容がitemsに反映されます。

サンプル


このエントリーをはてなブックマークに追加
ブログランキング・にほんブログ村へ
にほんブログ村

別のブログで公開してたものです。
一部をこっちのブログに移行しようと手動で(^^;)移行したものです。

ウィンドウの閉じるボタンを押されたときの閉じないようにする方法は
こんなかんじになります。

stage.setOnCloseRequest((WindowEvent event) -> {
	// 閉じるを阻止!
	 event.consume();
});

これをそのまま入れると強制終了しかできなくなるので注意w
閉じると困るときのみevent.consume()を呼ぶようにしましょうw


このエントリーをはてなブックマークに追加
ブログランキング・にほんブログ村へ
にほんブログ村

別のブログで公開してたものです。
一部をこっちのブログに移行しようと手動で(^^;)移行したものです。

TextFieldの変更イベントを取るには、textPropertyにaddListenerすればよい。
newValueに値が入っている。

textField.textProperty().addListener((ObservableValue observable, String oldValue, String newValue) -> {
	・・・・・・
});

このエントリーをはてなブックマークに追加
ブログランキング・にほんブログ村へ
にほんブログ村

別のブログで公開してたものです。
一部をこっちのブログに移行しようと手動で(^^;)移行したものです。

リンク: [Java8] JavaFXでファイル選択ダイアログ

リンク先についでに書いとけばよかったんだが・・・

ファイル選択ダイアログは、javafx.stage.DirectoryChooserを使用します。

こんな感じで

DirectoryChooser dirChooser = new DirectoryChooser();
         
dirChooser.setTitle("ディレクトリ選択");
// 初期ディレクトリをホームにする
dirChooser.setInitialDirectory(new File(System.getProperty("user.home")));
         
File file = dirChooser.showDialog(mStage);
if(file != null) {
	System.out.println(file.getPath());
}

このエントリーをはてなブックマークに追加
ブログランキング・にほんブログ村へ
にほんブログ村

↑このページのトップヘ