Java8

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

Scene Builderをながめてると、マルチタッチに対応してそうなので試してみた。

サンプル:TestMultiTouch.zip

基本、"On Touch Moved"、"On Touch Pressed"、"On Touch Released"、"On Touch Stationary"の処理を実装すれば取れる。
あと、"On Touch Stationary"はリファレンスによるとタップアンドホールみたいなのを取れるみたいな感じで書かれているが実際取ってみたけど、いまいちよくわからない(^^;)
これが基本でジェスチャーのイベントも取れるようになっている"On Swipe *"がスワイプ、"On Zoom"が指二本で広げたり閉じたりするジェスチャ、"On Rotate"が指二本で回すようなジェスチャが取れる。

このサンプルは、マルチタッチ対応のタッチパネル付きのWindows8.1 PCで試した。 ズームと回転はMac+Magic Trackpadで取れるのを確認した。



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

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

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);
	}
}

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

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

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に反映されます。

サンプル


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

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

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

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

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


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

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

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

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

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

↑このページのトップヘ