1

UIManager.put(...) 呼び出しで JSplitPane ディバイダーをペイントするのに少し苦労しています。うまくいきません。私は "Metal" ルック アンド フィールを使用していますが、この変更は GUI が既に作成された後で行う必要があります。私の他のすべての UIManager.put(...) 操作は機能しているようですが、カラーキーアイテムに対してのみです。また、すべての作業が完了したら、SwingUtilities.updateComponentTreeUI(getRootPane()) も利用します。私のコード例は以下です。私のペインターを機能させるための提案があるかどうか疑問に思っていました。お時間をいただき、ありがとうございました。

    UIManager.put("SplitPane:SplitPaneDivider[Enabled+Vertical].foregroundPainter", new Painter() {
          @Override
          public void paint(Graphics2D g, Object object, int width, int height) {
            g.setColor(new Color(15, 15, 15));
            g.fillRect(0, 0, width, height);
          }
    });
    UIManager.put("SplitPane:SplitPaneDivider[Enabled].backgroundPainter", new Painter() {
          @Override
          public void paint(Graphics2D g, Object object, int width, int height) {
            g.setColor(new Color(15, 15, 15));
            g.fillRect(0, 0, width, height);
          }
    }); 
    UIManager.put("SplitPane:SplitPaneDivider[Enabled].foregroundPainter", new Painter() {
          @Override
          public void paint(Graphics2D g, Object object, int width, int height) {
            g.setColor(new Color(15, 15, 15));
            g.fillRect(0, 0, width, height);
          }
    }); 
    UIManager.put("SplitPane:SplitPaneDivider[Focused].backgroundPainter", new Painter() {
          @Override
          public void paint(Graphics2D g, Object object, int width, int height) {
            g.setColor(new Color(15, 15, 15));
            g.fillRect(0, 0, width, height);
          }
    });
    SwingUtilities.updateComponentTreeUI(getRootPane()): 

上記は、私がやろうとしていることのほんの一例です。なぜそれが機能しないのですか?繰り返しになりますが、ご協力いただきありがとうございます。

4

1 に答える 1

2

Nimbus LAFこれらは ではなく のプロパティであるため、機能しませMetal LAFん。

プロパティを表示するには、 UIManager DefaultsMetal LAFを確認してください。これにより、変更できる可能性のある UIManager プロパティが表示されます。

于 2015-07-24T22:24:13.597 に答える