2014年 5月

Java Developer Connection のプログラマチャレンジ Vol.2

Java JavaFX

この前のエントリーの続きです。

前回は検索ファイルのハイライト表示が Swing のように簡単にできそうにないとしてあきらめてました。

JavaFX8 で導入された TextFlow を使えば実現できるんじゃないかと思っていたところ Twitter で TextFlow で、できるんじゃないかと教えていただいたので早速チャレンジしてみました。

結果からいうと Swing の JTextPane より柔軟性に優れ、テキストの装飾の自由度も遙かに JavaFX8 の TextFlow のほうが高いです。

0

ただし、編集できないです。(>_<。)

編集とかする必要があれば使い慣れているエディタを使うことになるだろうから良しとしましょう。(^_^;

あと JavaFX では CSS を使ってプログラムの見栄えを良くしたり、ちょっとしたエフェクトをかけたりすることができます。

例えば、Node の上にマウスカーソルがのったら、出たら、押されたら、 それらの処理を Java コードで書くと次のようになります。(たぶん、、、)

11

 

これを CSS を使うとどうなるか。

Button の例を次に示します。

12

これは Button 全てに適用させてます。

めっちゃ楽です!

Button それぞれにエフェクトを変えたい場合は ID を設定して個別の記述すればいいだけです。

CSS is Great!

しかし、こんなに便利で簡単に大きな効果を得られるのにネット上では CSS の情報はかなり少ないです。

今回かなりネットサーフィンしてあーでもない、こうでもないと悩みました。

その中で TabPane に Tab がいっぱいになってポップアップリストビューが表示されたときのチェックマークの色を変えたかったのですがどれだけ探しても解決方法をみつけることはできませんでした。

1

それと WebView のスクロールバーもマウスがのったらグラデーションするようにしたかったのですが何故かできませんでした。

なんで WebView だけ?

まだまだ JavaFX 解らないことだらけなのに CSS まで(>_<。)

でも、楽しいからもっと時間がほしい! (*^▽^*)

あと、ついでにこんなどうでも良いような(迷惑な)こともやってみました。

2

SubScene を透過させてみました。

プログラム本体を移動させて表示させると 3D マスコット(そんな良いもんじゃ無い!)みたいですね。

3

上の Label と Button は普通の Scene なのでこれを取っちゃえば面白いことができそうです。

3D 時計を作ってある時間に 3D の鳩が画面に出てきてポッポ、ポッポと鳴き出すとか(なんのこっちゃ!)

発想力が貧相だな・・・

なにはともあれ、楽しめたので Happy だ!

動画も貼っておきますので興味のある方はみてくださいませ!

 

JavaFX is Great!

Hatena タグ: ,

Java Developer Connection のプログラマチャレンジ

Java JavaFX

Java Developer Connection テクニカルティップって覚えている人っていますよね?

そこでプログラマチャレンジってのがあって当時私もチャレンジしてみたのですが

簡単そうで難しかった思い出があります。

そもそも当時の Java はタブにコンポーネントを貼れないため閉じるボタンをタブじゃないところに置かなくてはいけませんでした。

非常にダサかったです。

現在リリースされている Java8 では次世代 UI の JavaFX8 が使えますので最新の Java8 を使って作ってみました。

ちょっと予定していた機能を実装できなかったり、Java8 の Files.wark メソッドでの探索処理ではまったりでたくさん泣きました。

結局、完成には至りませんでしたがそこそこできたので良しとします。(ヲヒ

大文字、小文字を区別するかしないか

サブディレクトリも検索するかどうかをチェックボックス付きのメニューアイテムで選択できるようにしました。

ディレクトリチューザーを開くようにして容易に検索場所を指定できるようにしました。

1

 

PathMatcher を使っているのでエディタブルな ComboBox を利用して複数の拡張子を指定できるようにしました。

検索対象のファイルのリストをタブにまとめました。

そしてリストビューにファイルのパスを表示するようにしました。

2

 

リストビューのパスを選択するとそのファイルの表示をするようにしました。

swing では検索ワードを色をつけて太字とすることが可能だったのですが JavaFX ではどうしたらいいか解りませんでした。

TextFlow を使えばなんとかなるのかなって思ってみたのですがちょっと解決方法が思いつきませんでした。(残念!

3

 

そこで、それならば代わりに印刷機能を付けちゃおうって思ってやってみたのですが・・・

これまた、頭がドッカーン!!

何故か印刷ダイアログのキャンセルボタン、もしくはウィンドゥの閉じるボタンを押しても印刷してくれるという・・・

凄すぎるよ!JavaFX8 の PrintAPI

おまけに一枚分しか印刷できない。(たぶんこれは私の理解不足です。

4

 

あと、以前のエントリーで Java8 の Files.wark メソッドが便利だと書いたのですが訂正します。

使いづらいです!

java.nio.file.AccessDeniedException で仕事放棄します。(;´Д`)

しかたないので Java7 の古い API でグルグルまわしました。

基本的な機能はだいたいできたので良しとします。

あとは音とかアラートダイアログとかアバウトとか細かい作業なのでどうでもいいです。

どうせ自分専用だしね! (^_^)

あれから12,3年くらい経つのかな?

ずいぶん良くなった!

Java 最高!

Hatena タグ: ,