サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
skrb.hatenablog.com
今回から主要なIDEでJavaFXの環境を整えて、サンプルを作るというところまでを解説していきます。主要なIDEというのは以下の3種類です。 NetBeans Eclipse IntelliJ IDEA はじめがNetBeansなのは、単に私が使い慣れているからです。 どれもJDKとIDEがインストールされているという前提で説明します。Liberica JDKやZuleFXなどのJavaFXを含んだJDKを使う場合でも、JDKに含まれているJavaFXは使わずに一般のライブラリとして話を進めます。 なお、OpenJFX SDKは必要ありません! MavenやGradleを使えば、Mavenのセントラルレポジトリから自動的にJavaFXをダウンロードするので、OpenJFX SDKをインストールする必要はないのです。 JavaFXのアプリケーションを作るには、それが一番手っ取り早いはずです。
Java 11からJavaFXがOracle JDKに含まれなくなったことはみなさんご存知の通り。もともとOpenJDKのJDKプロジェクトにはJavaFX (OpenJFX)は含まれていなかったので、Oracle OpenJDKなどにもJavaFXは含まれていません。 でも、ディストリビューションによってはJavaFXを含んでいるものがあります。たとえば、Liberica JDKなどがJavaFXを含んでいます。 なので、JDKソムリエの @yamadamn さんはJavaFXを使うんだったらLiberica JDKを推すのですが、それはハッキリいってまちがいです。 その理由は、デスクトップアプリケーション特有の視点、つまり アプリケーションを配布しなくてはいけない ということに対しての配慮がないからです。 これはどういうことかというと、アプリケーションのユーザーにアプリケーションの実行
このエントリーはJavaFX Advent Calendarの24日目です。 qiita.com Java SE 9からjlinkコマンドが使えるようになり、カスタムJREを作れるようになりました。 ところが、jlinkを使うにはモジュールアプリケーションでないとダメだというような間違った言説が流れているような気がします。 jlinkで作るカスタムJREは非モジュールアプリケーションでも可能なんです!!!! ということで、JavaFXの非モジュールアプリでカスタムJREを作ってみましょう。 サンプルは超簡単なラベルを表示するだけのものです。 package net.javainthebox.hello; import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene;
前回のエントリーはOpenJFXとOpenJDKでJavaFXを動かそうというものでした。 skrb.hatenablog.com でも、OpenJFX SDKにパスを通さなくてはいけないなど、ちょっとめんどうだったのもたしか。 そんなおり、GluonのJoahn VosさんがOpenJFXをMavenでも使えるようにプルリク出してくれました。 github.com この結果、Maven CentralにOpenJFXが登録されました!! さっそく使ってみましょう。 サンプルコードはこちら。 package net.javainthebox.hello; import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.contr
今までOracle JDKでJavaFXを使っていたみなさま、こんにちは。 なんと、Java SE 11からOracle JDKは無償版がなくなりました!(開発のみであれば、無償でも使用できますけど...) しかたないので、OpenJDKを使わざるをえないと思われている方も多いと思います。 ところが、OpenJDKにはJavaFXが含まれていないのです!! 「えっ、OpenJFXってOpenJDKのプロジェクトじゃないの?」と思われるかもしれません。確かにOpenJFXはOpenJDKのプロジェクトなのです。でも、OpenJDKのプロジェクトがJava SEのRIであるOpenJDKに含まれるというわけではありません。 OpenJFXも、Java SEのRIであるところのOpenJDKには含まれていないのです。 とはいっても、OpenJFXを自分でビルドして使うのはハードルが高すぎますね。
このEntryは JavaFX Advent Calendar の22日目のエントリーです。 昨日は id:hagi44 さんの 業務で JavaFX をちょっとだけ使ってみた でした。明日は id:yumix_h さんが再び登場です。 なんか、ITproの連載が終わってから、完全にJavaはオフモードになってしまっていますが、久しぶりにblog書くのではてな記法もぜんぜん覚えていないというていたらく。 まぁ、仕事ではJavaもJavaFXも使っているので、Javaに触っていないというわけではないのですが... ということで、今日はControlsFXを紹介しようと思います。 ControlsFX ControlsFXはJonathan Gilesさんを中心にJavaFXのコントロールを提供するためのプロジェクトです。 ControlsFXのコントロールの中には、DialogのようにJav
このEntryは JavaFX Advent Calendar の最終日です。今年は誰も落とさずに、Adventしました!!すばらしい!!!! 昨日は @masanori_msl さんの JavaFX + Apache POIでSpreadsheet操作 でした。 さて、バンプマッピングです。 なぜ、バンプマッピングかというと、JavaFX Advent Calendar の 19 日目のひらおかさんの JavaFX で小惑星を描いてみよう で、私が Twitter で次のようにコメントしたからです。 @yumix_h SquareはSphereのtypoでしょうか。また、小惑星の表面はバンプマッピングした方がらしく見えると思いますよ。— Yuichi Sakuraba (@skrb) 2016年12月19日 とコメントしたのにもかかわらず、バンプマッピングのことってどこかに書いたことない
もうずいぶん日時が経ってしまいましたが、1 月 24 日に福岡で行われた JavaQne 2015 に参加してきました。JavaOne じゃなくて、JavaQne です。ちなみに Q は九州の Q です。 きしださんから JavaFX の話をということだったのですが、JavaFX の新しめのところを話してもキョトンとされるだけなのは重々承知しています。なので、比較的食いつきやすい Swing からの移行に関して話をしてきました。 ビックリしたのが Swing 経験者の数。数人いればいい方だと思ってたのですが、半分ぐらいの人が Swing を使っていた経験ありでした。 内容は JJUG CCC 2014 Fall で話したものの焼き直しです。でも、CCC では前半で時間を使いすぎて、後半がかなり駆け足になってしまったので、今回は前半は抑え気味にしました。それでも、最後はちょっと時間が足りなか
このエントリーは JavaFX Advent Calendar 2014 の最終日です。 昨日は @orekyuu さんの 24 日目なのに、タイトルは 25 日目になっている JavaFX Advent Calendar25日目 ~ JavaFXで夢のCanvasライフ でした。 いつも、アニメーションなどの描画ネタが多いのですが、今日は趣を変えて JavaFX のアプリケーションでプラグインを作ろうと思います。 意外に知られていないと思いますが、Java SE にはプラグインを作るのに便利なクラスがあります。 そのクラスは java.util.ServiceLoader クラスです。 ServiceLoader クラスについては、ずいぶん前に ITpro の Java 技術最前線に記事を書いたので、そちらをぜひご参照ください。 「Java SE 6完全攻略」第11回 コンポーネントのロ
このエントリーは、2014 年の JavaFX Advent Calendar の 1 日目のエントリーです。 明日は alchemicalogic さんです。 blog も半年ぶりなわけですが、それよりも久しぶりの JavaFX の勉強会である JavaFX Night を 11/25 に開催しました。ほぼ 1 年ぶりです ^ ^;; 雨という悪コンディションの中、約 50 人の方にご参加いただきました。もっとキャンセルが多いかと思っていたのですが、うれしい誤算でした。 櫻庭は、バインドについての発表を行いました。 実をいうと資料は使いまわし。7/11 に大阪で よなよな JavaFX というイベントを開催したのですが、そこで話した内容と同じです。 資料はこちら。 Bind Me Softly from skrb Property バインドは JavaFX 1.x 時代の JavaFX
福岡でのプレゼンではいつも通り JavaFX のプレゼンツールで行いました。 Slideshare の表紙を見ていただければ分かるかもしれませんが、今回は本をテーマにしたプレゼン資料を作成しました。 なので、資料のページ送りも、紙のページをめくったようなアニメーションで行いました。で、ページ送りの部分だけ独立させてみました。 この動画だと、ページを 3D で動かしているように見えるかもしれませんが、全部 2D です ^ ^;; そのせいで、いろいろとめんどうなことやってます。 ページのクリッピングのアニメーション ページは重ねて表示してあり、上に現在表示しているページ、下に次に表示するページとなっています。 まず、行うのは上の現在表示しているページをクリッピングすること。 クリッピングというのは任意のノードで表示領域を制限することです。 単にクリッピングしただけではしかたないので、クリッピ
8/24 に JJUG と JavaFX ユーザグループの共催で、JavaFX のハンズオンを行いました。 私がメインで説明をして、 id:aoe-tk さんと fukai_yas さんにヘルプしていただきました。 当日はなんと歩留まり 90% 以上!! 人数では隣でやっていた Java EE 7 のハンズオンに負けてしまうのですが、歩留まりや懇親会の参加率ではこちらの方が勝っていましたよww さて、ハンズオンでは 2 つのアプリケーションを作成しました。一方が Hello, World! と、そのちょっとした拡張。もう一方が表とブラウザを使ったブックマーク的なアプリケーションです。 テキスト JavaFX で Hello, World! ソースコード https://github.com/skrb/Hello テーブルと組み込みブラウザ ソースコード https://github.com
7/22 に JJUG のナイトセミナ Inside Lambda で「Project Lambda の基礎」というタイトルでプレゼンをしてきました。 内容は SlideShare で見てもらうとして、今回は私は前座で、とりは宮川さんの Lambda の内部構造。なので、今回はちょっと遊ばせてもらいました。 Project Lambdaの基礎 from skrb 何を遊んだかというと、プレゼンの資料です ^ ^;; この講演の前に、映画の Short Peace で大友克洋が巻物風のアニメーションをやっているということをテレビで見たのです。絵コンテも巻物ということで、すごい横長。これはおもしろいなぁと思ったわけです。 で、プレゼンでもやってみたくなってしまったわけです、巻物を。 でも、さすがに下の絵のように左から右へと動くわけにはいきません。というのも、そうすると縦書きにしなくては行けない
7/2 に JavaFX 勉強会 を開催しました。 当日はいつものように Oracle に会場を貸していただきました。ありがとうございます。 また、Ustream 職人の @yusukey さんにストリーミング、Togetter は @kimukou2628 さんにまとめていただきました。ありがとうございます!! Togetter http://togetter.com/li/330960 前半、片貝さんが NetBeans、私が Scene Builder という JavaFX の 2 大ツールについて説明をおこないました。 NetBeans はもうすぐ 7.2 がリリースされるので、7.2 の話題がメインでした。7.2 ではパフォーマンスの改善と、エディタ周りが強化されるようです。 JavaFX に関する部分だと、Scene Builder との連携ができるようになったことや、CSS
前回の続きです。 前回は、プレゼンツールに最低限な機能として、マウスクリック or キー入力によるページが切り替わることといいました。そして、イメージを切り替えるプレゼンツールを作ったところまで行いました。 しかし、これだけだと、ページを動的に変化させることができません。 そこで、今回はページを切り替えることに加え、ページ内での動きを実装していくことにします。 ところが、ここで困ったことが起きます。というのも、イメージだけでは動きを持たせることがなかなか難しいのです。 1 枚のページを複数のイメージで表すこともできますが、そのイメージをすべてプレゼンツールで保持させるのは本末転倒なような気がします。 前回、プレゼンツールとコンテンツを分けて考えるべきといいましたが、これはコンテンツ側で表さなくてはいけないことだと思うわけです。 じゃあ、コンテンツはどうやって表しましょう。これもいろいろとや
なぜか急に Twitter で JavaFX のプレゼンツールが話題になっていたのでした。で、参考になればということで、自分のプレゼンツールについて書いてみたいと思います。 まずはじめに重要なのが、プレゼンツールとコンテンツは切り離して考えるべきということ。 コンテンツ側で表現しなくてはいけないことと、プレゼンツールで実装しなくてはいけないことをはっきりさせないといけません。 たとえば、文字を整列して表示することなんかはコンテンツ側でやればいいことです。たとえば、@kyon_mm さんは DSL でコンテンツを表現しようとしていますけど、文字列を整列させるのは DSL でやればいいんです。 DSL 書けなければ、最悪イメージでもいいわけですよね。お絵かきツールで文字並べればいいんですから。 @kyon_mm さんがプレゼンツールの要件 を書いてますけど。そこに書かれているほとんどの項目はコ
JavaFX はアニメーションを簡単に書けるのですが、いざやってみるとどうやって書けばいいか分からないことも多々あります。意外に多いのが、複数のアニメーションを組み合わせること。 複数のアニメーションを同時に行うのであれば ParallelTransition クラス、1 つ 1 つシーケンシャルに行いたいのであれば SequentialTransition クラスを使うことができます。 ところが、全部同時とか、シーケンシャルというのは少なくて、下の絵のように個々のアニメーションがばらばらなことが多いわけです。 こういう場合も、SequentialTransition クラスと ParallelTransition クラスを組み合わせれば書けないことはないのですが、それなりにめんどうです。 じゃあ、どうすればいいかというとメインの時間軸を設定しておいて、そこに各アニメーションをくっつけてい
昨日のエントリー は、思っていたよりも反響を呼んでしまってビックリしている櫻庭です。 今日はちょっとだけ追加。 というのも、Jenkins の川口さん ( id:kkawa ) から次のようなことを聞かれたからです。 @skrb @nahi 本物のWebKitが使えるというところが味噌なのかな?WebViewも組み合わせればDOMもテストできる? 2012-03-08 13:27:55 via TweetDeck to @skrb <p id="addtext"></p> そして、HTML でボタンなどをクリックした時にコールされる関数が次のようなものだったとします。 function addText(arg) { var element = document.getElementById('addtext'); element.innerText = arg; } タグにテキストを追加す
(追記) コードが間違っていたので、次の日に修正版を書きました。 今日はちょっとマニアックなネタです。 というのも、@mike_neck が悩んでいるようだったので... JavaFX には WebView というブラウザーのコントロールがあります。それを使って JavaScript のテストをしてしまおうというのが今日のお題です。 ただ、問題は @mike_neck も悩んでいるように、スレッドの問題です。 JUnit は JUnit のスレッドで動作し、JavaFX も JavaFX のイベントディスパッチスレッド (EDT) で動作します。 問題はその間をどうやって取り持ってあげるかです。 JUnit は自身のスレッド @Before のメソッドを実行して、@Test のメソッドを実行していきます。つまり、主導権を握っているのは JUnit であって、テストされる側が自分で JUni
JavaFX シリーズ目次 JavaFX 2.1のインストール (Windows 編) NetBeans で JavaFX (Windows 編) JavaFX 2.1 のインストール (Linux 編) JavaFX で Hello, World! シーングラフ コントロール その 1 今日から、JavaFX のプログラミングに入っていきます。 その前に、おととい JavaFX 2.1 の build 12 が公開されました。今日から、この build 12 を使っていきます。 さて、一番はじめのプログラムといえば、やっぱり Hello, World! ですね。 とりあえず、見ていただきましょう。 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.La
JavaFX シリーズ目次 JavaFX 2.1のインストール (Windows 編) NetBeans で JavaFX (Windows 編) JavaFX 2.1 のインストール (Linux 編) JavaFX で Hello, World! シーングラフ コントロール その 1 [追記] NetBeans 7.2 から JavaFX 用の Java プラットフォームを作成しなくても、JavaFX が使えるようになりました。 前回は JavaFX の SDK をインストールしたので、今回は NetBeans IDE で JavaFX の開発環境を整備していきます。 ところで、IDE に Eclipse を使いたいという方もいらっしゃるかもしれませんが、JavaFX の場合はおすすめできません。というのも、現状 JavaFX の Eclipse Plug-in が提供されていないから
Java SE 7 のローンチイベントで 7 月から 9 月にかけて全国行脚をしてきました。 Java SE 7 なのに、なぜか JavaFX 2.0 についても喋ったりしたりしてたわけです。 ということで、そこで使用した資料を公開しました。基本的には 4 月の JJUG CCC で喋った内容と同じなのですが、いろいろとアップデートしています。 JavaFX 2.0 - リッチクライアントのためのUI基盤 View more presentations from skrb ついでに講演の前にデモとして流したアニメーションも貼っておきます。
6/16 に JavaFX 2.0 勉強会 を開催しました。 今回は JavaFX 2.0 が公開されて日も浅いということなので、結局私がほとんど喋り、最後に片貝さんに NetBeans の JavaFX 対応について喋っていただきました。 不思議だったのが、今までの JavaFX 勉強会と、今回の JavaFX 勉強会で参加者が全然違っていたこと。 JavaFX 1.x 時代は複数回参加していただいた人も多いのですが、今回の参会者で今まで参加したことのある方はほんのわずか。 これはやはり JavaFX 1.x の頃と、JavaFX 2.0 では興味を持つ対象が代わってきているということなのでしょう。ベタな言い方をすれば、Java の開発者が増えています。 Oracle は JavaFX を Java の API にすることで、Java の開発写を引き込むといっていましたが、ある意味それは
6/16 に JavaFX 2.0 勉強会を行いますが、そこでミニハンズオンをしようと思っています。以下、ハンズオンで使用する資料です。 JavaFX ユーザグループ 第 5 回勉強会 今回はカスタムブラウザを作っていきます。NetBeans 7 + JavaFX Plugin を使用していますが、Eclipse + JavaFX SDK でも、JavaFX SDK 単体でもかまいません。 完成したソースは GitHub に置いてあります。 https://github.com/skrb/CustomBrowser プロジェクトを作成 本節は NetBeans 用の説明なので、NetBeans を使わないのであれば飛ばしてください。 まず、NetBeans でプロジェクトを作成します。 左側のプロジェクトの部分で左クリックし、[新規プロジェクト] を選びます。 プロジェクトのカテゴリは [
前回、JavaFX のアプリケーションの構造について説明しました。そこで重要になるのが、シーングラフです。 JavaFX Script であれば宣言的文法でシーングラフを構築できたのですが、JavaFX 2.0 ではそれはできません。なので、Swing/AWT と同じように add or set をずらずらと書いていくことになります。 たとえば、次の図に表したシーングラフを作ってみましょう。 シーングラフを構成する部分だけを次に示します。 VBox root = new VBox(10); root.setAlignment(Pos.CENTER); Scene scene = new Scene(root, 800, 600); stage.setScene(scene); HBox hbox = new HBox(10); hbox.setAlignment(Pos.CENTER);
きしださんの Javaでブラウザが表示できるようになるよ! のエントリーは JavaFX の WebKit をベースにしたブラウザである WebView コントロールを Swing のコンポーネントに貼ってます。 なんで Swing に貼るのと Twitter できしださんに聞いたら、単に NetBeans でコンポーネントを配置できるからということでした。 でも、Swing を使う必要は全然ないんです。JavaFX でやればいいんですから。 たまたま、InfoQ の記事のためにブラウザのサンプル作ったので、それを紹介してしまいます。 ということで、とりあえず表示してみました。 ちょっとかっこつけのために、反射のエフェクトを使っています。まだスクロールバーの配置がおかしいなど、バグもあるようですが、とりあえず普通に使えます。 ということで、ソース。 ページが切り替わると、テキストボックスの
ITpro の Java 技術最前線で、ずっと JavaFX 連載をしていたのですが、それも次の月曜でおしまい。 というのも JavaFX 2.0 で JavaFX Script がサポートされなくなってしまうためです。JavaFX Script を中心に解説をしてきたので、しかたないのですが... で、12/6 の原稿が最終回です。 途中で打ちきりということで、解説していないことがまだいっぱいあります。できるだけ最終回にいれようと思っていたのですが、分量オーバー。なくなく削ったわけです。 でも、せっかく書いたものなので、ここで公開してしまいます。 よく使用するアニメーション XTransition というクラス群は、よく使うアニメーションを簡単に記述できるようにしたクラス群です。 合計 8 種類ありますが、詳細 JavaFX では TranslateTransition、FadeTran
やっと JavaFX 1.3 がリリースされました。 今回のリリースはかなり唐突な感じがありました。リリース時期が ML や掲示板でまったく触れられないし、うわさもないなかでの突然のリリースでした。やっぱり S と O は違うなぁとこんなところで感じたりしてます。 まぁ、それはそれとして、JavaFX 1.3 はずいぶんいろいろな部分で強化されたようです。簡単に新機能をまとめてみましょう。元ネタは What's New in JavaFX 1.3 です。 パフォーマンス パフォーマンスはかなりがんばったみたいです。いろんな部分がちょこちょこと強化されています。 バインドが 2 から 3 倍速くなった アプレットの起動時間が 20% 向上 (ただし、Java SE 6u18 以降の場合) テキストレンダリングが 5 から 10 倍速くなった 複雑なアニメーションが 10 倍速くなった メモリ
記事を書いていて気づいたのですが、NetBeans の JavaFX Plugin には日本人にとって致命的なバグがあります。 詳細は gihyo.jp の連載の第 2 回に掲載される予定なのですが、はまる人がいるかもしれないのでここで先に書いておきます。 今のところ、NetBeans で日本語を使おうとすると、文字化けします。 通常、NetBeans ではプロジェクトのプロパティでソースのエンコーディングを決められるのですが、JavaFX のプロジェクトではソースのエンコーディングを指定できなくなっているのです。 そのため、デフォルトの UTF-8 でソースファイルは記述されます。 しかし、JavaFX のコンパイラはそれをデフォルトエンコーディングでコンパイルしてしまいます。つまり、Windows であれば MS932 がデフォルトエンコーディングなので、UTF-8 のファイルを MS
次のページ
このページを最初にブックマークしてみませんか?
『Everyday JavaFX』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く