質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Q&A

1回答

1575閲覧

ActiveになってBorderが強調されるのをならないようにしたい

XCUBE

総合スコア101

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

0グッド

0クリップ

投稿2018/03/01 10:33

編集2018/03/05 10:21

ButtonやTextFieldなどActiveになると青い枠線で囲まれて、Activeになっていることが強調されますが
それによって微妙に配置がずれたり、デザイン上好ましくないときがあります。

ActiveになってもBorderが強調されないようにcssに記述するとこはできますでしょうか?

ご存知の方、いらっしゃいましたらご教示いただければ助かります。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

それによって微妙に配置がずれたり、デザイン上好ましくないときがあります。

確かにこれは「うーん」と感じたことあります。ただ自分なんぞはあきらめてしまう口ですが・・・

Borderが強調されないようにcssに記述

自分が思いつくのはアプリケーションのスタイルシートでデフォルトのスタイルを打ち消すような定義を上書きすることぐらいです。デフォルトのスタイルはJavaのインストール先のjarファイルの中に入っており、例えばWindowsですと

C:\Program Files\Java\jre1.8.0_162\lib\ext\jfxrt.jar

などに入っています。(Java9からは提供形態が変化しているのでこういう場所ではないと思いますが)

このjarファイルからcssを探すといくつか入ってますね。

bash

1$ jar tvf jfxrt.jar | fgrep '.css' 2com/sun/deploy/uitoolkit/impl/fx/ui/deploydialogs.css 3com/sun/javafx/scene/control/skin/caspian/caspian-no-transparency.css 4com/sun/javafx/scene/control/skin/caspian/caspian.css 5com/sun/javafx/scene/control/skin/caspian/embedded-qvga.css 6com/sun/javafx/scene/control/skin/caspian/embedded.css 7com/sun/javafx/scene/control/skin/caspian/fxvk.css 8com/sun/javafx/scene/control/skin/caspian/highcontrast.css 9com/sun/javafx/scene/control/skin/caspian/two-level-focus.css 10com/sun/javafx/scene/control/skin/modena/blackOnWhite.css 11com/sun/javafx/scene/control/skin/modena/modena-embedded-performance.css 12com/sun/javafx/scene/control/skin/modena/modena-no-transparency.css 13com/sun/javafx/scene/control/skin/modena/modena.css # <==多分これ? 14com/sun/javafx/scene/control/skin/modena/touch.css 15com/sun/javafx/scene/control/skin/modena/two-level-focus.css 16com/sun/javafx/scene/control/skin/modena/whiteOnBlack.css 17com/sun/javafx/scene/control/skin/modena/yellowOnBlack.css

このうちmodena.cssにデフォルトの外観のスタイルが定義されていると思います。
modena.cssで使われているpseudo classですが、HTMLのスタイルシートとJavaFXのそれは微妙に仕様が違っているので、以下を参考にするとよいと思います。

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html#scrollbar

例えばそこには

The ":active" and ":focus" dynamic pseudo‑classes are not supported. However, Nodes do support the ":pressed" and ":focused" pseudo‑classes, which are similar.

などといったことが書かれています。

投稿2018/03/01 11:21

編集2018/03/01 11:22
KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

XCUBE

2018/03/05 10:21 編集

ありがとうございます。 modena.cssを見てTabPane に -fx-focus-color: initial; を適用したところ Tabに関して強調されなくなりました。 TextFieldについても同じく -fx-focus-color: initial; を適用させたらアクティブ時に背景色が透明になりましたが配置はずれませんでした。 それで改めて-fx-background-color:WHITE; で色を付けたらまたずれるようになりました。 TabPaneについては理想通りになりましたが、TextFieldについてはもう少し試行錯誤してみます。
KSwordOfHaste

2018/03/02 05:20

色を付けただけでレイアウトに影響があるという点ですが、JavaFX固有の話なのかHTMLのスタイルでも似たことが起きるのかちょっと興味がわきました。難しいですね。
XCUBE

2018/03/05 10:03

レイアウトが微妙にずれるのはHBoxなどの中にTextFieldを配置した場合になんですが、ActiveによりBorderが太くなるからと勝手に解釈していました。 -fx-focus-color: initial; したときに背景色が透明になるのはよくわかりません。 さらに-fx-background-color:WHITE; にしたらずれるのはBorderとは関係なさそうなので更にわかりません。 狙いがあってHBoxの中にTextFieldを配置しているのですが、もしユーザがずれを気にするようでしたらPaneなどに変えて対応したいと思っています。
KSwordOfHaste

2018/03/05 10:49

関係ないかも知れませんが、JavaFXでレイアウトを作成している際に「おや」と思うことがたまにあります。 例えばHBoxの中にTextFieldなどを並べた時、paddingを指定してないと(SceneBuilderではpadding=0,0,0,0と表示されるにもかかわらず)HBoxとTextFieldの間に一定の隙間が空いてしまうなどです。SceneBuilderでHBoxのpaddingを(1,0,0,0)のような値に設定すると上に1単位の隙間はあるものの他の辺の隙間がなくなるのです。 きちんと調べてはいないのですが、Modenaのcss定義の関係で「どこかにデフォルトのpaddingが指定されているのだろうか?」なんて想像しています。つまりSceneBuilderで自分で明示するとModenaのcssを上書きするために隙間が空かなくなるのだろうと思ったわけです。 「paddingを明示的に指定すれば回避できる」のをいいことにちゃんと調べてないのですが、本来ならModenaの定義を確認しておくべきなのでしょうね・・・
XCUBE

2018/03/05 11:30

そうですか。paddingで回避できたのですね。 こちらも試しにHBoxにpaddingを設定してみましたが、回避できませんでした。 Nodeの階層だったり他の要因で回避できたりできなかったりなのでしょうね。 色々と情報ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問