24. juni 2004 - 10:58
Der er
9 kommentarer og 1 løsning
JComboBox scrollbar farver
Jeg har en JComboBox, som har en scrollbar ude i siden, når man skal vælge et item. Denne scrollbar kunne jeg godt tænke mig at få til at skifte baggrundsfarve. Hvordan gør jeg det?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
Èn måde at gøre det på kunne være: UIManager.put("ScrollBar.thumb", Color.white); UIManager.put("ScrollBar.background", new Color(80,90,155)); Men ovenstående ændrer så farve i alle scrollbars.
Det kan godt lade sig gøre, men er kanon kringlet Du skal lave din egen klasse som extender JComboBox, herefter skal du lave en klasse som extender MetalComboBoxUI og sætte UI på din combobox. import javax.swing.JComboBox; import javax.swing.JScrollBar; import javax.swing.JScrollPane; import javax.swing.plaf.basic.BasicComboPopup; import javax.swing.plaf.basic.ComboPopup; import javax.swing.plaf.metal.MetalComboBoxUI; import java.awt.Color; public class JFrame_4 extends javax.swing.JFrame { public JFrame_4() { initComponents(); JScrollBar bar = testCombo1.getBar(); bar.setBackground(Color.red); } private void initComponents() { testCombo1 = new TestCombo(); getContentPane().setLayout(new java.awt.FlowLayout()); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); testCombo1.setMaximumRowCount(4); testCombo1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" })); getContentPane().add(testCombo1); pack(); } private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); } public static void main(String args[]) { new JFrame_4().show(); } private TestCombo testCombo1; } public class TestCombo extends JComboBox{ public TestCombo() { super(); ui = new TestUI(this); setUI(ui); } public JScrollBar getBar(){ return ui.getBar(); } private TestUI ui; } class TestUI extends MetalComboBoxUI{ public TestUI(JComboBox combo){ this.combo = combo; } protected ComboPopup createPopup() { Scroll popup = new Scroll( combo ); pane = popup.getScroller(); return popup; } public JScrollBar getBar(){ return pane.getVerticalScrollBar(); } private JComboBox combo; private JScrollPane pane; } class Scroll extends BasicComboPopup{ public Scroll(JComboBox combo){ super(combo); } public JScrollPane getScroller(){ return scroller; } }
Kan du bruge noget af det ??
Det vil jeg også gerne vide :)
10. august 2004 - 13:07
#5
Lukketid?
02. september 2004 - 15:09
#6
Er der ikke nogen der vil svare og have point?
02. september 2004 - 15:32
#7
Hmm - egentlig ved vi jo ikke om du kunne bruge noget af det, men jeg lægger da bare et svar.
02. september 2004 - 15:32
#8
Hvilken løsning brugte du?
05. september 2004 - 23:55
#9
?
05. oktober 2004 - 21:46
#10
Lukketid?
Kurser inden for grundlæggende programmering