Life読んだ本や、プログラミング、システム開発等のねたを中心に。文章を書く練習なので少し硬派に書くつもりだけど、どうなることやら。この広告は、90日以上更新していないブログに表示しています。JavaFXMementoWeaver開発記メインとなるロジックも大分実装できてきたので、気分を変えてJavaFXのscene周りを少しお色直ししてみる。具体的にはMainMenu画面へのレイアウトの適用と、Imageを表示したButtonの実装を行う。SceneBuilderだけでは実現できなかったところもあるのでメモ。結論からいうと使用前と使用後はこんな感じ。ボタンの数が増えてしまっているのは不問(SUC見直しで増えた)。使用後うん、自画自賛だがだいぶそれっぽくなった。Download)様よりダウンロードしました。アイコン作者様の情報は以下のとおりです。フリーの素敵なアイコンを公開いただきありがとうございます*1。大きくは以下3点を改善することを目標とした。AnchorPaneに直接ボタンを配置しただけで特にレイアウトの指定は行っていなかったので、画面をリサイズするとすごく残念なことになっていたMWを構成する画面全体的に、画面下部にExitボタンを配置しているが、ボタンの配置場所などが微妙にずれていて気持ち悪かった。ボタンしか配置しない画面であるのに、ボタンが小さい。メニュー画面のくせにボタンの文字列(Text)によりボタンのサイズが微妙に異なるのが気持ち悪い。レイアウト適用の方針レイアウトは以下のように適用した。Height=30を設定GridPaneはVGrowをALWAYSに設定。HeightともにMAX_VALUEを設定GridPaneの各グリッドにButtonを配置。HeightともにMAX_VALUEを設定HBoxにButtonを配置。HBoxのAlignmentをCENTER_RIGHTに設定。適用した結果のシーングラフは、SceneBuilder上では以下のようになる。Padding辺りをちょいちょいと変更して完成。今までGUI(VisualuRuby,Ruby-Gnome2,Swing)を書くときに、真面目にレイアウトマネージャを使ったことが無かったが、JavaFXのように配置するUI部品がツリー構造で表現されていてそれをサポートするGUIビルダがあると、レイアウトなんかの設定も簡単にできると得心。Ruby.)なんかは(向こうはブロックのネストかもしれないが)先見の明だったのかと感心*3*4。Ensembleのサンプルコード(GraphicButton)のように行ける。}SceneBuilderを用いたButtonへのImageView埋め込み(2013/03/26訂正のため追記)昨日のエントリでは大嘘をこいていたようなので、訂正。結論からいうとSceneBuilderからButtonにImageViewを埋め込むことが可能だった。以下、大まかな手順Buttonを配置するまぁ適当に。左下の階層ペインにButtonが追加される。Buttonの子としてImageViewを追加する左上のライブラリペインでImageViewを選択して、階層ペインのButtonにImageViewをドラッグする。Heightはお好みで。レイアウトタブ(右ペイン)で指定できる。imageパスはImageViewのプロパティタブ(右ペイン)で指定できる。Buttonとかやりたくない。SceneBuilderからは表示する画像を指定する箇所が見つけられない。Google先生に聞いてみてもSceneBuilderではサポートしていないとのこと。仕方が無いからFXMLを編集して、Buttonの子孫としてImageを定義することにする。</graphic></Button>なお、最初のimport文を追加せずにいて、画像が表示されないと悩んでいたことは内緒。Imageのurlの指定の仕方で若干はまったが、@がカレントディレクトリを指し示しているという記述が、Oracleの文書に記載されていた。配置しておけば上記の指定でOK*1:日本語で書いても無駄だろうけど。*2:今回はたまたまデフォルトの2x3*3:実際にSHOESを使ったことが無いのだけど、簡単なUIだったらいいかもね。いつか試すかもしれないような気がすると思わなくもない。*4:今見たら_whyはもう噛んでいないのかも。23:57Tweet広告を非表示にする関連記事2014-12-31JRubyFXによる画面遷移とダイアログ表示JavaFXの時もそれなりに苦労した画面遷移とダイアログ表示。»プロフィールid:kazyury読んだ本や、プログラミング、システム開発等のねたが中心です。ここでは硬派にと思ってるけど、どうなるかなぁ。(1)はてなブログをはじめよう!kazyuryさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。