Java by API/javax.swing/ListCellRenderer

Материал из Java эксперт
Версия от 17:20, 31 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

implements ListCellRenderer

   <source lang="java">

import java.awt.BorderLayout; import java.awt.Color; import java.awt.ruponent; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultListCellRenderer; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; public class MainClass {

 public static void main(String args[]) throws Exception {
   Color colors[] = { Color.GREEN, Color.ORANGE, Color.PINK, Color.RED,
       Color.WHITE, Color.YELLOW };
   JFrame frame = new JFrame("Color JComboBox");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   final JComboBox comboBox = new JComboBox(colors);
   comboBox.setMaximumRowCount(5);
   comboBox.setEditable(true);
   comboBox.setRenderer(new ColorCellRenderer());
   frame.add(comboBox, BorderLayout.NORTH);
   final JLabel label = new JLabel();
   label.setOpaque(true);
   label.setBackground((Color) comboBox.getSelectedItem());
   frame.add(label, BorderLayout.CENTER);
   ActionListener actionListener = new ActionListener() {
     public void actionPerformed(ActionEvent actionEvent) {
       Color selectedColor = (Color) comboBox.getSelectedItem();
       label.setBackground(selectedColor);
     }
   };
   comboBox.addActionListener(actionListener);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

} class ColorCellRenderer implements ListCellRenderer {

 protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
 private final static Dimension preferredSize = new Dimension(0, 20);
 public Component getListCellRendererComponent(JList list, Object value, int index,
     boolean isSelected, boolean cellHasFocus) {
   JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index,
       isSelected, cellHasFocus);
   if (value instanceof Color) {
     renderer.setBackground((Color) value);
   }
   renderer.setPreferredSize(preferredSize);
   return renderer;
 }

}

      </source>