swing下拉框改变颜色
时间: 2023-09-08 10:07:26 浏览: 126
下拉框显示不同的颜色
4星 · 用户满意度95%
你可以使用 JComboBox 类和 ListCellRenderer 接口来实现下拉框的颜色变化。以下是一个例子:
```java
import javax.swing.*;
import java.awt.*;
public class ColorComboBox extends JFrame {
private JComboBox<String> comboBox;
public ColorComboBox() {
setTitle("Color ComboBox");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200, 150);
// 创建下拉框并添加选项
comboBox = new JComboBox<>();
comboBox.addItem("Red");
comboBox.addItem("Green");
comboBox.addItem("Blue");
// 设置下拉框的渲染器,用于自定义选项的显示
comboBox.setRenderer(new ColorCellRenderer());
// 添加下拉框到窗口
add(comboBox);
}
private class ColorCellRenderer extends JLabel implements ListCellRenderer<String> {
public ColorCellRenderer() {
setOpaque(true); // 设置为不透明,以便显示背景色
}
@Override
public Component getListCellRendererComponent(JList<? extends String> list, String value, int index, boolean isSelected, boolean cellHasFocus) {
setText(value); // 显示选项文本
// 根据选项文本设置背景色
if (value.equals("Red")) {
setBackground(Color.RED);
} else if (value.equals("Green")) {
setBackground(Color.GREEN);
} else if (value.equals("Blue")) {
setBackground(Color.BLUE);
}
// 如果选项被选中,则设置前景色和背景色为反色
if (isSelected) {
setForeground(getBackground().darker());
setBackground(getBackground().brighter());
} else {
setForeground(Color.BLACK);
}
return this; // 返回自定义的渲染器组件
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
ColorComboBox frame = new ColorComboBox();
frame.setVisible(true);
});
}
}
```
在这个例子中,我们自定义了一个 ColorCellRenderer 类来渲染下拉框的选项。在 getListCellRendererComponent() 方法中,我们根据选项文本设置背景色,并且如果选项被选中,则设置前景色和背景色为反色。最后,我们返回 JLabel 组件作为自定义的渲染器。
阅读全文