Я работаю над небольшим применением. Я создал JComboBox, и я хочу изменить цвета внутри. Я уже изменил цвет фона, переднего плана, стрелкиButton, ... Но я не знаю, как изменить цвета для scrollBar внутри.Java: JComboBox -> ScrollBar - изменить цвет
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();
}
}
}
Что такое ** progressBar внутри **? – StanislavL
Я сомневаюсь, что есть специальный ключ для полосы прокрутки внутри combobox, более вероятно, что это будут те же ключи, что и любая другая полоса прокрутки. – Holger
@Holger Я знаю, как изменить фон для классического scrollBar (я думаю, когда я создаю новый компонент JScrollBar, я могу изменить цвет), но я не знаю, как я могу получить scrollBar в comboBox. Я пробовал это, но это не работает. – jakub