1. /*
  2. * @(#)BasicComboBoxRenderer.java 1.14 01/11/29
  3. *
  4. * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package javax.swing.plaf.basic;
  8. import javax.swing.*;
  9. import javax.swing.event.*;
  10. import javax.swing.border.*;
  11. import java.awt.*;
  12. import java.io.Serializable;
  13. /**
  14. * ComboBox renderer
  15. * <p>
  16. * <strong>Warning:</strong>
  17. * Serialized objects of this class will not be compatible with
  18. * future Swing releases. The current serialization support is appropriate
  19. * for short term storage or RMI between applications running the same
  20. * version of Swing. A future release of Swing will provide support for
  21. * long term persistence.
  22. *
  23. * @version 1.10 08/28/98
  24. * @author Arnaud Weber
  25. */
  26. public class BasicComboBoxRenderer extends JLabel
  27. implements ListCellRenderer, Serializable {
  28. protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
  29. public BasicComboBoxRenderer() {
  30. super();
  31. setOpaque(true);
  32. setBorder(noFocusBorder);
  33. }
  34. public Dimension getPreferredSize() {
  35. Dimension size;
  36. if ((this.getText() == null) || (this.getText().equals( "" ))) {
  37. setText( " " );
  38. size = super.getPreferredSize();
  39. setText( "" );
  40. }
  41. else {
  42. size = super.getPreferredSize();
  43. }
  44. return size;
  45. }
  46. public Component getListCellRendererComponent(
  47. JList list,
  48. Object value,
  49. int index,
  50. boolean isSelected,
  51. boolean cellHasFocus)
  52. {
  53. /**if (isSelected) {
  54. setBackground(UIManager.getColor("ComboBox.selectionBackground"));
  55. setForeground(UIManager.getColor("ComboBox.selectionForeground"));
  56. } else {
  57. setBackground(UIManager.getColor("ComboBox.background"));
  58. setForeground(UIManager.getColor("ComboBox.foreground"));
  59. }**/
  60. if (isSelected) {
  61. setBackground(list.getSelectionBackground());
  62. setForeground(list.getSelectionForeground());
  63. }
  64. else {
  65. setBackground(list.getBackground());
  66. setForeground(list.getForeground());
  67. }
  68. setFont(list.getFont());
  69. if (value instanceof Icon) {
  70. setIcon((Icon)value);
  71. }
  72. else {
  73. setText((value == null) ? "" : value.toString());
  74. }
  75. return this;
  76. }
  77. /**
  78. * A subclass of BasicComboBoxRenderer that implements UIResource.
  79. * BasicComboBoxRenderer doesn't implement UIResource
  80. * directly so that applications can safely override the
  81. * cellRenderer property with BasicListCellRenderer subclasses.
  82. * <p>
  83. * <strong>Warning:</strong>
  84. * Serialized objects of this class will not be compatible with
  85. * future Swing releases. The current serialization support is appropriate
  86. * for short term storage or RMI between applications running the same
  87. * version of Swing. A future release of Swing will provide support for
  88. * long term persistence.
  89. */
  90. public static class UIResource extends BasicComboBoxRenderer implements javax.swing.plaf.UIResource {
  91. }
  92. }