問題タブ [synth]
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 - Java L&F のカスタマイズ: シンセを使用して BorderFactory の境界線をカスタマイズするにはどうすればよいですか?
具体的には、現在、TitledBorder を持つ JPanel を持っています。境界線の外観をカスタマイズしたい。私のアプリの現在の状態では、タイトルは描画されますが、境界線自体は描画されません。
imagePainter を Panel オブジェクトの panelBorder メソッドにバインドすると、パネルの周りにカスタム イメージを配置できますが、コードで境界線を明示的に設定していないパネルにのみ表示されます。そのコードは次のようになります。
逆に、このカスタム イメージを、TitledBorder を適用したパネルにのみ表示するにはどうすればよいですか?
名前付きパネルも使用してみました:
および名前バインディング:
これにより、特定のパネルのみのスタイルを変更できるので便利です。ただし、元の問題は解決しません。パネルの NamedBorder をカスタマイズすることはまだできません。
NamedBorder を指定すると、PanelBorder ペインターは無視され、名前だけが出力されます。NamedBorder を取り除けば、カスタム ボーダー グラフィックを使用できますが、以前のタイトルと同じ場所に JLabel を取得するために、レイアウトを突っ込んで突き刺す必要があり、これは望ましくありません。
さらなる調査により、レンダリングされた行がない理由は、TitledBorder のコンストラクターが、タイトルに加えてレンダリングする別の Border の引数を取るためであることが明らかになりました。この引数を渡していませんでした。デフォルトは、選択した L&F によって異なります。System L&F を使用していたとき、デフォルトは LineBorder でした。どうやら Synth のデフォルトは EmptyBorder です。LineBorder を明示的に指定すると、行が元に戻り、問題のほとんどが解決されます。
私の問題の残りの部分は、LineBorder にカスタム グラフィックを使用することです。今のところ、カスタム グラフィックを 2 番目の PanelBackground イメージとしてレンダリングすることで取得しています。これは実際の背景の上に合成され、目的の視覚効果を実現しますが、理想的な実装ではありません。
java - Synth LaFJLabelDISABLEDカラー
Synth LaFを使用して、JLabelのFOREGROUNDカラーをDISABLED状態に設定できません。誰かがこれを行うことに成功しましたか?これが私のLaF.xmlファイルでの私のラベルのスタイル定義です。
LaF.xmlファイルで定義されている他のすべてのスタイルが、ラベルのWHITEの通常の状態の色を含め、アプリケーションで適切にレンダリングされることに注意してください(lbl.setEnabled(false)を実行すると黒になりません)
また、Synthコードを調べてみると、SynthStyle.getColorに次のコメントがあります。
しかし、JLabelに無効な色を設定する方法がわかりませんでした
ご協力いただきありがとうございます!
java - JComboBox で矢印のスタイルを変更するにはどうすればよいですか
JComboBox の矢印にカスタム イメージを使用したいとします。
シンセxmlファイル、またはUIManager.put(...)を使用して可能であることは理解していますが、方法がわかりません。現時点でやりたいことは、プログラムによって、または使用する画像を上書きするだけで、矢印の画像を別のものに変更することだけです。どうすれば正確にこれを行うことができますか?
java - カスタム シンセのルック アンド フィールのインセット
アプリケーションに Synth を使用してカスタム ルック アンド フィールを実装しています。基本的には、SynthStyle、SynthPainter、SynthStyleFactory のカスタム バージョンを提供しています。
私はXML を使用していません。つまり、すべて Java API を介して行われます。一般的に、これはうまく機能しています。
ただし、適切なインセットを設定する最良の方法は、少しトリッキーです。さまざまなオプションが表示されます。
- SynthStyle の getInsets をオーバーライドして、各リージョンの特定のインセットを返す
- SynthStyle.installDefaults を使用してコンポーネントに境界線を適用する
- すべてのインセットを (0,0,0,0) に設定し、ペイント メソッドで補正します
- 新しい ComponentUI デリゲートを作成する
最善のアプローチは何ですか?またその理由は何ですか?
java - カスタム Synth Look & Feel でチェックボックスのレイアウトを制御する
Synth を使用してカスタムの「スチーム パンク」をテーマにしたルック アンド フィールを実装しようとしています。基本的には、SynthStyle、SynthPainter、および SynthStyleFactory のカスタム バージョンを提供します。
私は XML を使用していません。つまり、すべて Java API を介して行われます。一般的に、これはうまく機能しており、実際にはかなりまともに見え始めています.
ただし、JCheckBox などの「複合」コンポーネントで問題が発生しています。SynthPainter で paintCheckBoxBackground() が呼び出されると、座標は JCheckBox によってカバーされる領域全体を参照します。
この領域のどこにチェック ボックス アイコンとテキストを別々に描画する必要があるかをどのように判断すればよいですか?
java - Synth LaF さまざまなパネル スタイル
私は 2 つの JPanel を持つアプリを持っていますが、それらは異なるスタイルを持つ必要があります。Synth LaF を使用していますが、1 つの xml ファイルに 2 つの異なるスタイルを含める方法がわかりません。スタイルを定義して「パネル」にバインドしますが、両方のパネルが似ています。より多くのスタイルを定義して、どのパネルでどのスタイルを使用すべきかをシンセに知らせる可能性はありますか?
java - シンセルックアンドフィールをスライダーに適用しますか?
カスタムサムを適用しようとしているスライダーがたくさんあります。寸法は12x20で、以下のコードでシンセのルックアンドフィールを使用して適用しています。これにより、水平スライダーの親指が正しく表示されますが、垂直スライダーを作成すると、親指の端が歪んでしまいます。これを行うためのより良い方法はありますか?また、サムプレスされたコードは何もしません。その理由は、sliderThumbsに「プレスされた状態」がないためだと思いますか?スライダーを押したときにL&Fを変更する方法はありますか?よろしくお願いします!!!
乾杯、ルーカス
java - Java Synth:JTabbedPaneおよびSynthGraphicsUtilsの問題
私のJavaアプリケーションには、JTabbedPaneとシンセのルックアンドフィールがあります。l&fはxmlファイルによって定義されます。これは私にとって非常にうまく機能します。
ここでの課題:JTabbedPaneのタブ内のテキストを、水平方向ではなく垂直方向に書き込む必要があります。このために、SynthGraphicsUtilsをサブクラス化し、メソッドpaintText(SynthContext ss、Graphics g、String text、int x、int y、int mnemonicIndex)を上書きしました。これも機能します。
ここで問題があります。さまざまなタブのテキストが縦に表示されますが、すべてのタブのサイズが正しく計算されていないようです。タブが正しく分離されていません。残念ながら、画像を投稿することは許可されていません...タブは互いに重なり合っています。
この問題を修正する方法がわかりません:-(私のコードは次のとおりです:
SwingTest.java
laf.xml
MySynthGraphicsUtils.java
}
どうもありがとうございます!!
java - Java MIDISynthesizer.jarが再生されない
私は自分のマシンでうまく機能する簡単なシンセ楽器のGUIを書きました。ただし、jarファイルに入れるとすぐに、そのjarファイルを実行したときにサウンドが再生されなくなります。それはサウンドバンクと関係があると思います。いずれにせよ、jarファイルを実行したときに自分のマシンでノートを再生することはできないので、他の人のマシンでは機能しないと思います。何が起こっているのかについて何か考えはありますか?ありがとう。
-マット
java - Swing 内で発生する不要な再描画をデバッグする方法
開発中の Swing アプリで再描画を行うと、奇妙な問題が発生します。特定のコンポーネントのテキスト (ウィンドウの一番下にあるステータス バーのテキスト ラベル) を設定すると、画面の非常に異なる領域にあるテーブル全体が再描画されるように指示されていることがわかりました。基本的にステータスバーのテキストを設定するたびにウィンドウ全体を再描画するように求められているように見えるため、パフォーマンスの問題が発生しています。
何が起こっているのかを把握しようとして RepaintManager をさまよい、このテキストのラベルを設定しようとすると、メインの JPanel 全体がダーティ コンポーネントとしてマークされていることがわかりました。ただし、どの時点でそれが発生しているのか、正確にはなぜそれが発生しているのかをデバッグするのに問題があります。再描画システムについて調べてみましたが、他のテキスト ラベルが設定されているときに重複しないテーブルを再描画する必要がある理由がわかりません。
Swing Explorer を使用して、レイアウトの境界線を視覚化して、異常な方法でオーバーラップしていないことを確認しました。すべて問題ないように見えます。
JTable に再描画を要求している一連の呼び出しを特定する方法を探しています。paintComponent() にブレークポイントを追加してスタックをたどると、RepaintManager の paintDirtyRegions() 呼び出しの内部に行き着き、メインの JPanel 全体 (ウィンドウ内のすべてを含む) が tmpDirtyComponents 変数内に置かれます。
最初に単一のステータステキストラベルを設定しただけで、JPanel全体がダーティとしてマークされる方法を誰か説明できますか? そうでない場合は、エラーを見つけるためにどこにフックするかについて、いくつかのガイダンスを提供していただけますか?
ご協力いただきありがとうございます。