繁体   English   中英

Java:JComboBox-> ScrollBar-更改颜色

[英]Java: JComboBox -> ScrollBar - change color

我正在研究小型应用程序。 我做了一个JComboBox,我想改变里面的颜色。 我已经更改了背景,前景,arrowButton的颜色,但是...我不知道如何更改内部滚动条的颜色。

comoBox = new JComboBox();    
comoBox.setName("currencyCombo");

DefaultComboBoxModel comboModel = new DefaultComboBoxModel();
comboModel.addElement("gagD");
comboModel.addElement("agg");
comboModel.addElement("EhgsY");
comboModel.addElement("CgafgY");
comboModel.addElement("CfadgY");
comboModel.addElement("Ggafg");
comboModel.addElement("Sgfsdg");
comboModel.addElement("Ugfasdg");
comboModel.addElement("fasfasf");
comoBox.setModel(comboModel);
comoBox.setOpaque(true);

UIManager.put( "ComboBox.disabledBackground", new java.awt.Color(32, 34, 41));
UIManager.put( "ComboBox.disabledForeground", new java.awt.Color(181, 181, 181));
UIManager.put( "ComboBox.background", new java.awt.Color(32, 34, 41));
UIManager.put( "ComboBox.foreground", new java.awt.Color(181, 181, 181));
UIManager.put( "ComboBox.selectionBackground", new java.awt.Color(181, 181, 181));
UIManager.put( "ComboBox.selectionForeground", new java.awt.Color(32, 34, 41));

   comoBox.setUI(new BasicComboBoxUI(){
   @Override
   protected JButton createArrowButton() {
       JButton arrowButton = new BasicArrowButton( 
        BasicArrowButton.SOUTH,
        new java.awt.Color(32, 34, 41), 
        new java.awt.Color(181, 181, 181),
        new java.awt.Color(181, 181, 181),
        new java.awt.Color(32, 34, 41));
       arrowButton.setBorder(BorderFactory.createLineBorder(new java.awt.Color(32, 34, 41)));
       return arrowButton;
    }             
});

我尝试了这个:

Object obejct = currencyCombo.getUI().getAccessibleChild(currencyCombo, 0);
              Component co = ((Container) obejct).getComponent(0) ;
                      if( co instanceof JScrollPane){
                            JScrollPane pane = (JScrollPane) co;        
                            Component[] components = pane.getComponents();
                            for (Component component : components) {
                                if(component instanceof JScrollBar)
                                {
                                    JScrollBar jsb = (JScrollBar) component;
                                    jsb.setBackground(Color.red);
                                    jsb.setForeground(Color.blue);
                                    jsb.setUI(new BasicScrollBarUI());
                                    jsb.updateUI();
                                }

                            }

                      }

Hej jakub,以下代码将更改ComboBox内ScrollBar的背景:

编辑:您可以通过以下方式访问滚动条的颜色:

UIManager.put("ScrollBar.thumbHighlight", Color...;         
UIManager.put("ScrollBar.thumbDarkShadow", Color...; 
UIManager.put("ScrollBar.highlight", Color...; 
UIManager.put("ScrollBar.trackHighlight", Color...;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM