【问题标题】:Java JComboBox appearenceJava JComboBox 外观
【发布时间】:2014-03-12 15:46:33
【问题描述】:

在我的应用程序中,我有两种类型的 JComboBox:可编辑和不可编辑。
以下是可编辑项在带有 Java 7 的 Windows 7 中的显示方式:

这是不可编辑的:

是否可以在不可编辑的JComboBox 中设置白色背景?

【问题讨论】:

  • 如果您发布一个我们可以玩的MCVE,您的运气会更好。您是否尝试过使用自定义渲染器?
  • 所有 cmets 都是关于“禁用”,但我写的是“不可编辑”,这意味着用户无法在 combo box 内使用键盘书写,但可以单击并查看项目...

标签: java swing jcombobox


【解决方案1】:

只需在不可编辑的组合上设置背景。 注意:默认情况下,可编辑组合的编辑器是 JTextField,这就是使用 UIManager 值的原因。

在 Windows XP 上使用 Java 7:

import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.*;

public class ComboBoxDemo implements Runnable
{
  public static void main(String[] args) throws Exception
  {
    SwingUtilities.invokeLater(new ComboBoxDemo());
  }

  @SuppressWarnings("unchecked")
  public void run()
  {
    String[] items = new String[]{"", "Apple", "Banana", "Carrot"};

    Color bgColor = UIManager.getColor("TextField.background");

    UIManager.put("ComboBox.selectionBackground",
                  new ColorUIResource(bgColor));

    JComboBox combo1 = new JComboBox(items);
    combo1.setPrototypeDisplayValue("XXXXXXXXXXXXXXX");
    combo1.setEditable(true);
    combo1.setSelectedIndex(-1);

    JComboBox combo2 = new JComboBox(items);
    combo2.setPrototypeDisplayValue("XXXXXXXXXXXXXXX");
    combo2.setEditable(false);
    combo2.setSelectedIndex(-1);
    combo2.setBackground(bgColor);

    JFrame frame = new JFrame();
    Container c = frame.getContentPane();
    c.setLayout(new FlowLayout());
    c.add(combo1);
    c.add(combo2);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(200, 100);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }
}

编辑:添加了代码以消除大小和焦点颜色的差异。

【讨论】:

  • 它对我有用。你需要更好地解释你的问题。你看到什么你不想要的?或者,你没有看到你想要什么?
  • 我希望不可编辑的组合框 (Relazione 1) 看起来像可编辑的组合框 (lista cod)。
  • 当我运行我的演示时,它们的背景颜色看起来确实相同,这是您在 OP 中询问的内容。我看到的唯一其他物理差异是(1)它们有不同的长度,你没有问过,(2)不可编辑的组合在获得焦点时会改变颜色,你也没有问过。
  • 了解您正在运行的 Java 版本、操作系统、外观和感觉等也会有所帮助。
猜你喜欢
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 2012-05-02
  • 2010-11-13
相关资源
最近更新 更多