問題タブ [nimbus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 透明なテキストフィールドを備えたJavaNimbusLAF
透明にすることを目的としたいくつかの場所で無効なJTextFieldsを使用するアプリケーションがあります。これにより、テキストフィールドの通常の背景の代わりに背景が透けて見えます。
新しいNimbusLAFを実行すると、これらのフィールドは不透明になり(setOpaque(false)を設定しているにもかかわらず)、UIが壊れます。LAFが不透明なプロパティを無視しているようです。背景色を明示的に設定することは、いくつかの場所で困難であり、背景画像が実際には機能しないため、最適ではありません-それでも、LAFのデフォルトの背景を上にペイントし、境界線のような外観を残します(下のスプラッシュ画面には背景は画像と一致するように明示的に設定されています)。
NimbusにJTextFieldの背景をペイントしないようにする方法についてのアイデアはありますか?
注:スレッドセーフなsetText()とラッピング機能が必要なため、JLabelではなくJTextFieldが必要です。
注:私のフォールバックポジションは、システムLAFを引き続き使用することですが、ニンバスの方がかなり見栄えがします。
以下の画像の例を参照してください。
結論
この動作の驚きは、setOpaque()が何を意味するのかを誤って解釈したことによるものです-Nimbusバグレポートから:
これは、Swingの元の設計と、それが何年にもわたって混乱してきた問題です。問題は、setOpaque(false)がLAFの終了に副作用をもたらしたことです。これは、背景を非表示にすることであり、実際にはその目的ではありません。コンポーネントには透明なパーツがあり、スイングはその背後にある親コンポーネントをペイントする必要があると言っても過言ではありません。
NimbusコンポーネントもsetBackground(null)を尊重していないように見えるのは残念です。そうしないと、背景のペイントを停止するための推奨される方法になります。完全に透明な背景を設定することは、私には直感的ではないようです。
私の意見では、setOpaque()/ isOpaque()は誤ったパブリックAPIの選択であり、次のようになっているはずです。
isOpaque()== trueはSwingとの契約であり、コンポーネントサブクラスが背景全体のペイントを担当するためです。つまり、親は必要に応じてその領域のペイントをスキップできます(これは重要なパフォーマンスの向上です)。外部の何かがこの契約を(合法的に) 直接変更することはできません。その履行はコンポーネントにコード化される可能性があります。
したがって、コンポーネントの不透明度は、setOpaque()を使用して設定可能であってはなりません。代わりに、setBackground(null)のようなものを使用すると、多くのコンポーネントに「背景がない」ため、完全に不透明になりません。例として、理想的な世界では、ほとんどのコンポーネントに次のようなisOpaque()が必要です。
java - Java:UIフォント(Nimbus)の変更は機能しません!
私はこのニンバスリファレンスを参照しています。
グローバルフォントを少し大きく設定しようとしました。
...メニューに対してのみ機能し、他には何も機能しません(ボタン、ラベル)。
ラベルとボタンのフォントを変更してみました
ただし、フォントは残ります。
私のために働いた唯一のことはフォントを導き出すことでした:
ただし、これはオプションではありません。これは、要素ごとに 手動で実行する必要があるためです。
UIManagerのフォントの導出も機能しないことに注意してください。
LinuxとWindowsですべてをテストしました:同じ動作です。
APIがいかに厄介なのか理解できません。メソッドがsetFont(..)と呼ばれる場合、フォントを設定することを期待しています。この方法で考えられる状況でフォントを設定できない場合は、非推奨にする必要があります。
編集:
この問題はニンバスだけでなく、デフォルトのLAFにも当てはまります。
java - Leopardのさまざまなcom.sun。*パッケージのJavaソースコードはどこにありますか?
私は自宅でMacBookに取り組んでおり、Appleの最新のJDK1.6がインストールされたLeopardを実行しています。IDEで、com.sun.java.swing.plaf.nimbus.NimbusLookAndFeelのソースコードを参照したいのですが、IDEで見つかりません。私が閲覧したいもう1つの例は、com.sun.java.swing.plaf.nimbus.ButtonPainterです。
com.sunを参照するには、IDEAプロジェクトにどのJARまたはZIPを追加する必要がありますか。.nimbus。IDE内のクラスLeopardにのみ関心があります。これは、SunのJDkを使用するWindowsで正常に機能するためです。
私のアプリはNimbusルックアンドフィールで実行されるため、Nimbusクラスが利用可能であることを知っています。
java - ニンバスのルックアンドフィール用のシンプルなセルレンダラーの設計
私はいくつかのsで構成されるシンプルなセルレンダラーを持っていJLabel
ます(レンダラー自体は拡張JPanel
されます)。ニンバスのルックアンドフィールで適切にレンダリングできるようにしようとしています。基本的に、明るい行では(Nimbusには代替の行の色があるため)、特定のセルレンダラーがテーブルの背景色(明るい行と暗い行の両方の色よりもはるかに暗い)を使用しています。私のレンダラーでは、次のことを行います。
このコードブロック全体をコメントアウトすると、すべての行が暗い行の色になります(テーブルの背景ではなく、代替色でもありません)。何が起こっているのかさえ理解できません!上記のコードスニペットは、背景色が異なるセルをどのように生成しますか?table.getBackground
メソッドを呼び出すたびに色が変わりますか?
このコードスニペットを使用してみました:
これはDefaultTableCellRenderer
クラスにあります。そして、それはまったく影響を与えていないようです。誰かがニンバスで動作するカスタムセルレンダラーを持っていますか?
編集:誰かが興味を持っているなら、私は実際にJavaではなくScalaを使用していたので、これはScalaテーブルセルレンダラーの問題であることが判明しました。以下の受け入れられた答えは、Javaプログラムでうまく機能します。ここに提出された別の質問。
scala - NimbusとScalaを使用したテーブルセルレンダラー
ニンバスのルックアンドフィールを使用してセルレンダラーで発生していた問題についてこの質問をしましたが、問題はおそらくScalaに関係していることが判明しました。基本的に、Panel
(ではなくDefaultTableCellRenderer
)拡張するセルレンダラーがあり、奇妙な動作をしています。同等のJavaプログラムが正常に動作するのに対し、代替行の色は正しくレンダリングされません。誰かが興味を持っているなら、ここに実行するいくつかのScalaコードがあります:
コードを実行すると、問題が何であるかがわかります(Panel
-rendererの代替行の色が正しく機能していないことに関係しています)。同等のJavaを実行すると、正常に動作することがわかります。Scalaコードが期待どおりに機能しない理由を誰かが知っていますか?同等のJavaコードは次のとおりです。
java - JTabbedPane:タブの左側にあるアイコン
こんにちは私はニンバスのルックアンドフィールを使用していて、アイコンとテキストが付いたタブ付きペインを持っています。これで、アイコンがテキストの右側に表示されますが、左側に表示したいと思います。
また、アイコンとテキストの間にスペースを追加したいと思います。
ありがとう!
java - JTabbedPane の背景色を設定する
Nimbus ルック アンド フィールを使用しています。JTabbedPane でタブの背景色と前景色を変更する必要がありますが、JTabbedPane で色が設定されていません。setForeground()、setForegroundAt()、setBackground()、および setBackgroundAt() メソッドを試しましたが、機能しません。これが私のコードです
code>}
java - Swing ListCellRenderer の間違った背景色
ListCellRenderer
現在、 のカスタムを作成しようとしていJList
ます。残念ながら、ほとんどすべての例は単純に as を使用DefaultListCellRenderer
し、JLabel
それで完了します。ただし、 が必要でしたJPanel
(アイコンと 1 行のテキストだけでなく、もう少し多くの情報を表示する必要があるため)。
現在、背景色、特に Nimbus PLAF に問題があります。一見、私が得た背景色list.getBackground()
は白ですが、灰色の色合い(または青みがかった灰色)としてペイントされます。取得した色を出力すると、次のようになります。
背景色: DerivedColor(color=255,255,255 親=nimbusLightBackground オフセット=0.0,0.0,0.0,0 pColor=255,255,255
ただし、ご覧のとおり、これはペイントされるものではありません。
選択したアイテムに対して明らかに正常に機能します。現在、セル レンダラーの戻り値に入れているすべてのコンポーネントをJPanel
不透明に設定し、前景色と背景色を正しく設定していますが、役に立ちません。
ここで私が間違っていることはありますか?
ETA:うまくいけば実行されるサンプル コード。
奇妙なことは、私がそうするなら
それは魔法のように機能します。それで、私がそこに着くのに問題があるかもしれませんDerivedColor
かnimbusLightBackground
?
swing - 実行時に jre を選択する方法は?
Swing アプリがあり、Nimbus look'n'feelで実行したい。JRE の最新の更新があり、 UIManagerクラスを使用して Nimbus ルックアンドフィールを使用するようにアプリをセットアップする方法を知っていますが、実行時に適切な JRE を選択して Nimbus を使用するようにアプリを設定したいと考えています。どうやってするか?
私はネットビーンズを使用しています。