torutkのブログ

ソフトウェア・エンジニアのブログ

JavaFX

JavaFXアプリケーションのJDK 11対応(NetBeans編)

はじめに これまでにNetBeans 8.2/JDK 8のAntプロジェクト(種類はJavaFXアプリケーション)で作成したJavaFXアプリケーションを、JDK 11に対応させようと試みました。 NetBeans は間もなくリリース予定のNetBeans 10のテストバージョン(vc4)で、OpenJDK 1…

JavaFX 3Dの座標系とカメラの向きについて

JavaFX 3Dの座標系があやふやでしたので、整理をするためにいろいろ調査・実験をしています。 JavaFX 2D、3Dの座標系の定義 JavaFX 2Dの座標系 JavaFX 2Dの座標系は右の図のように、画面左上隅を原点とし、横方向がX軸(右向きが正)、縦方向がY軸(下方向が…

JavaFX 3DのテクスチャマッピングとAffine変換

(7/17 勘違いがあり、文章を大分修正しています)JavaFX 3Dの座標系は、画面の横方向がX軸、画面の縦方向がY軸、画面の奥行き方向がZ軸となっており、X軸の正は右方向、Y軸の正は下方向、Z軸の正は画面の奥方向となっています。最初左手系の座標系と思って…

JavaFXでウィンドウが閉じるときの処理はsetOnCloseRequestよりshowingPropertyがよい(改題)

この日記は朝の時点では setOnCloseRequest でウィンドウが閉じるときの実装について書いていました。次のツイートで、もっとよいやり方を教えてもらいましたので、showingPropertyを使う方法を追加しました。@boochnich WindowのshowingPropertyに対してadd…

JavaFXでガジェット風プログラムのサポートクラス作成 #jjug_ccc #ccc_m6

はじめに 先月5月20日(土)に、JJUG CCC 2017 Springで「JavaFXでデスクトップガジェット風プログラムを作る」のセッションを行いました。セッションのスライドは次です。 https://www.slideshare.net/torutk/jjugccc2017spring-m6-javafxこのセッションで…

プレゼン資料準備 #jjug_ccc #ccc_m6

5月20日(土)に日本Javaユーザーグループ主催のJavaイベント JJUG CCC 2017 Spring が開催されます。今回は、20分のセッションで「JavaFXでデスクトップガジェット風プログラムを作る」というお題で話をさせていただきます。時間は夕方16:45〜17:05です。Ja…

JavaFXでリサイズ可能な画像表示コントロールをScene Builderで扱えるようにしたい

この数年間の目標の一つに、JavaFXプログラミングのプレゼンテーションをJavaFXで作成するというものがあります。 すでに幾人の方々が実践していますが、まだそこに辿り着けていません。今回、Scene Builderだけでプレゼンテーション用スライド(画面)の記…

JavaFXのトップレベルウィンドウ(Stage)について少し整理してみた

JavaFXでGUIプログラムを作る際に、かならず扱うStageですがあまり着目していなかったので、少し整理してみました。JavaFXとウィンドウ - ソフトウェアエンジニアリング - Torutkウィンドウの装飾(タイトルバーや枠)の有無、透過ウィンドウ、リサイズ可否…

Scene Builderの使い方メモ(AnchorPaneを変える、Chartの軸の設定をする)

JavaFXのGUIレイアウト(FXML)をビジュアルに行うデザインツールScene Builderの使い方のメモです。 本日は、ノードの階層のトップにあるPaneを変更する方法と、Chart部品で図の縦軸・横軸の設定をScene Builder上で行う方法です。 トップのPaneを変更する …

JavaFX 3DのSphareに貼るテクスチャのマッピング(続々)

id:torutk:20161101の続きです。 前回のあらすじ 前回は、JavaFX 3Dの球面へ貼り付けたテクスチャ画像の表示が縦方向に潰れた様相になっていたため、あらかじめテクスチャ画像を正積円筒図法の地図投影変換をかけておくことでそれらしい表示を実現することが…

JavaFX 3DのSphareに貼るテクスチャのマッピング(続)

id:torutk:20161031 の続きです。 前回のあらすじ 前回は、テクスチャマップとして用意した世界地図をJavaFX 3DのSphereに貼ると、南北方向に縮んだ(北極/南極付近が広がった)表示となっているのに気づきました。検証のため、緯度経度を10度刻みで引いた…

JavaFX 3DのSphareに貼るテクスチャのマッピング

以前、JavaFX 3Dの機能を使って、3Dシェープの球体(Sphere)に、世界地図のテクスチャを貼って地球を表示させてみました。*1この際に使用した世界地図のテクスチャ用画像は次です。これを、JavaFX 3Dの球(Sphere)に貼って表示させたものが次です。これを…

JavaFXで作ったカレンダーに祝日の設定ファイルを読み込み反映させる

デスクトップにカレンダーを表示するプログラムをJavaFXで作成しています。 https://github.com/torutk/calendarVer. 0.1.8では、日付の色を、平日は黒、土曜日は青、日曜日は赤としていました。が、やはり祝日も識別したいなと思いました。日本の祝日は、日…

JythonでJavaFXプログラムを作る(Hello world編)

先日、id:torutk:20160807 で、JRuby環境でRubyスクリプトからJavaFX GUIを利用してHello worldな画面を表示してみました。今回は、Jython環境でPythonスクリプトからJavaFX GUIを利用してHello worldな画面を表示してみます。 JythonをWindows環境にインス…

JavaFXでカレンダー表示プログラムを作る(DatePickerのポップアップ利用)(続々々々々々)

id:torutk:20160710 の続きです。土曜日と日曜日にそれぞれ青、赤色で表示する設定をCSSに記述しました。 しかし、カレンダー表示月の前月/翌月の部分の土曜日と日曜日も、青、赤色で表示されてしまいます。そこで、CSS定義を修正して、カレンダー表示月の…

JavaFXでカレンダー表示プログラムを作る(DatePickerのポップアップ利用)(続々々々々)

id:torutk:20160709 の続きです。ここまで作ってきたカレンダー表示プログラムは、実行したときの日付をずっと「今日」として表示します。そのため、実時間(システムクロック)が翌日になっても、カレンダー表示の「今日」はそのままです。そこで、実時間の…

JavaFXでカレンダー表示プログラムを作る(DatePickerのポップアップ利用)(続々々々)

id:torutk:20160707 の続きです。積み残した色設定である、曜日によって色を変えるに取り組みました。CSSの定義には、曜日ごとのセレクターはないので、CSSだけでは曜日ごとに色を変えることができません。 そこで、Javaプログラム側で、日付のセルに曜日に…

JavaFXでカレンダー表示プログラムを作る(DatePickerのポップアップ利用)(続々々)

はじめに JavaFX でカレンダー表示を位置から作った、という内容を紹介しているブログを見つけました。こちらは、GridPaneを使って実現していました。 Java8でカレンダーを表示してみる - なるとブレイク最初、TableViewを使ってカレンダー表示を作ろうとし…

JavaFXでカレンダー表示プログラムを作る(DatePickerのポップアップ利用)(続々)

id:torutk:20160705 の続きです。ウィンドウ枠とタイトルバーを取っ払います。これでガジェット風になります。ウィンドウ枠とタイトルバーがないと、Windowsの標準操作による表示位置の移動、ウィンドウサイズの変更、終了などができなくなってしまいます。…

JavaFXでカレンダー表示プログラムを作る(DatePickerのポップアップ利用)(続)

id:torutk:20160702 の続きです*1。JavaFXプログラムで画面レイアウトを作るには大きく2つの方法があります。 画面レイアウトをFXMLと呼ばれるXMLファイルで定義し、それをJavaFXプログラム実行時に読み込んで画面表示させる方法 画面レイアウトをJavaコード…

JavaFXでカレンダー表示プログラムを作る(DatePickerのポップアップ利用)

This article explains a tiny calendar view program by JavaFX 8/9 using DatePickerSkin class. The following are the Japanese text version.先月、自宅のメインPCのOSをWindows 7からWindows 10へアップグレードしました。 Windows 7には、デスクトッ…

アニメーションを使用するJavaFXプログラムのCPU使用率低減(フレームレート)

id:torutk:20160608 で、JavaFXのアニメーションを使ったプログラムのCPU使用率を低減させるために、描画するノードをキャッシュする方法を確認しました。キャッシュ化によって、確かにある程度はCPU使用率が低減しましたが、まだ他のプログラムを邪魔をしな…

アニメーションを使用するJavaFXプログラムのCPU使用率低減(キャッシュ)

JJUG CCC 2015 Springで発表(id:torutk:20150412)した、JavaFXを使って作成したアナログ時計(SVG版)を実行すると、アニメーションを使用して時計の針の動きを実現しているので、CPUをそれなりに喰います。JavaFXのアニメーション機能は、60FPSを想定した…

JavaFXで作ったアナログ時計にタッチパネル操作を追加してみた際のメモ

この記事は、JavaFX Advent Calendar 2015 の二日目の記事です。一日目のJavaFXで流れるHello world - Qiitaも実は私が書いています。三日目は@btnrougeさんのMSI/EXE インストーラ版 Scene Builder を HiDPI 対応させるには - notepadです。 今年の春、JJUG…

JavaFXのアニメーションで繰り返しを無制限にするとメモリリークの兆候が…(続)

昨日id:torutk:20151027の続きです。アナログ時計の実現方法として、RotateTransitionを作成し、cycleCountを無限に設定してplay()を呼ぶことで、時計の針を回転させるアニメーションを繰り返し実行させていました。骨子は次のようなコードになります。 Rota…

JavaFXのアニメーションで繰り返しを無制限にするとメモリリークの兆候が…

今年の4月にJJUG CCC 2015 Springで講演させていただいたJavaFXでアニメーションの題材であるアナログ時計を少しリファインしています(タッチパネル操作を主に)。JavaFXとアナログ時計 - ソフトウェアエンジニアリング - Torutkその際ヒープ使用量を計測し…

Apache PDFBoxライブラリを使ってPDF文書の表示(着手編)

ときおり、PDF文書から任意のページを切り出したいということがあります。PDF文書を扱うのはAcrobat(≠Acrobat Reader)を購入するのが一番でしょうし、フリーのツールも多々存在しますが、ここはJavaでツールを作成してみたいと思います。まず、第一歩とし…

JavaFXのSwingNodeがJavaFXのイベントをSwingのイベントに変換しているあたり(続々々)

id:torutk:20150920の続きです。タッチパネル操作を認識する*1プログラムと、タッチパネル操作を認識しない*2プログラムに対するWindows OSからプログラムへ発行される入力操作に関するWindowsメッセージを調べてみました。 調査に使用したのはVisual Studio…

JavaFXのSwingNodeがJavaFXのイベントをSwingのイベントに変換しているあたり(続々)

昨日の日記(id:torutk:20150919)で、Windows OS上ではタッチパネル操作を扱うアプリケーションはRegisterTouchWindow APIを呼ぶこと、Javaでは、JavaFXのネイティブコードにこのAPIを呼ぶ実装が存在することを記載しました。ところが、JavaFXにおいて、タ…

JavaFXのSwingNodeがJavaFXのイベントをSwingのイベントに変換しているあたり(続)

昨日の日記(id:torutk:20150918)の続きです。マウスのホイール操作で拡大・縮小するSwingの画像表示コンポーネントをSwingの画面上に貼って動かしたときは、タッチパネルのピンチ操作で拡大・縮小しています。Swingはタッチパネル入力には対応していないの…