Topic: JComboBox的一个问题

  Print this page

1.JComboBox的一个问题 Copy to clipboard
Posted by: jfml
Posted on: 2003-05-08 22:11

做了一个颜色选择ComboBox,但是选中颜色后ComboBox背景无法改变
请大家帮忙看看哪里出了问题,谢谢

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class ColorComboBoxTester extends JPanel
{

class ComboBoxRenderer extends DefaultListCellRenderer
{
public ComboBoxRenderer()
{
setOpaque(true);
setHorizontalAlignment(CENTER);
setVerticalAlignment(CENTER);
}

public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus)
{
setComponentOrientation(list.getComponentOrientation());
Color color = ((JLabel)value).getBackground();

setBackground(color);
setText(((JLabel)value).getText());


return this;
}
}

public static void main(String s[])
{
JFrame frame = new JFrame("CustomComboBoxDemo");
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});

frame.getContentPane().add(new ColorComboBoxTester(), BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}

ImageIcon images[];

public ColorComboBoxTester()
{
JLabel l1 = new JLabel();
l1.setBackground(Color.red);
l1.setText("RED");
JLabel l2 = new JLabel();
l2.setBackground(Color.black);
l2.setText("BLACK");
JLabel l3 = new JLabel();
l3.setBackground(Color.blue);
l3.setText("BLUE");
JLabel l4 = new JLabel();
l4.setBackground(Color.green);
l4.setText("GREEN");
JLabel[] labels = new JLabel[] { l1, l2, l3, l4 };

// Create the combo box
JComboBox petList = new JComboBox(labels);
ComboBoxRenderer renderer = new ComboBoxRenderer();
renderer.setPreferredSize(new Dimension(100, 50));
petList.setMaximumRowCount(3);
    petList.setRenderer(renderer);

JComboBox tList = new JComboBox(new String[]{"1", "2", "3", "4"});


// Layout the demo
setLayout(new BorderLayout());
add(petList, BorderLayout.NORTH);
add(tList, BorderLayout.SOUTH);
setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
}
}

2.Re:JComboBox的一个问题 [Re: CrazyJavar] Copy to clipboard
Posted by: yakuu
Posted on: 2003-05-09 09:24

add code below:
petList.addItemListener(new ItemListener() {
   public void itemStateChanged(ItemEvent e){
     JLabel selLabel = (JLabel)e.getItem();
     JComboBox comb = (JComboBox)e.getSource();
     comb.setBackground(selLabel.getBackground());
   }
});

need your hard code.


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923