Java-металлический внешний вид UIManager для разделителя SplitPane

У меня возникли трудности с рисованием разделителя JSplitPane с помощью вызова UIManager.put(...). Это просто не работает. Я использую внешний вид «Металл», и это изменение должно произойти после того, как графический интерфейс уже создан. Все мои другие операции 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()): 

Вышеприведенное является лишь примером того, что я пытаюсь сделать. Любая идея, почему это не работает? Еще раз всем спасибо за помощь!


person user1457114    schedule 24.07.2015    source источник


Ответы (1)


Это свойства для Nimbus LAF, а не для Metal LAF, поэтому они не будут работать.

Чтобы увидеть свойства Metal LAF, проверьте значения UIManager по умолчанию, которые отобразят UIManager свойства, которые вы можете изменить.

person camickr    schedule 24.07.2015
comment
Благодарю вас! :) Полагаю, я думал, что мне сойдет с рук ключи Nimbus, стал небрежным и не подумал посмотреть, поддерживает ли их Metal. - person user1457114; 25.07.2015
comment
К сожалению, это не приблизило меня к покраске разделителя или других элементов, таких как ползунок. У меня плохое предчувствие, что эта дорога приведет к кастомной покраске компонентов качания для нескольких вещей. Спасибо за вашу помощь! - person user1457114; 25.07.2015