为 JComboBox 显示不可选择的默认值

Aze*_*tyu 4 java swing prompt jcombobox listcellrenderer

我有一个JComboBox包含三个 Items {"Personel", "Magasinier", "Fournisseur"}

我希望它JComboBox显示 value "Choisir une option :",这是一个不可选择的值。

我在以下之后尝试了此代码initComponents();

this.jComboBox1.setSelectedItem("Choisir une option :");
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

我怎样才能做到这一点 ?

Dun*_*nes 5

您可以JComboBox使用以下 SSCCE 代码覆盖模型中的选择代码:

public class JComboExample {

  private static JFrame frame = new JFrame();
  private static final String NOT_SELECTABLE_OPTION = " - Select an Option - ";
  private static final String NORMAL_OPTION = "Normal Option";

  public static void main(String[] args) throws Exception {
    JComboBox<String> comboBox = new JComboBox<String>();

    comboBox.setModel(new DefaultComboBoxModel<String>() {
      private static final long serialVersionUID = 1L;
      boolean selectionAllowed = true;

      @Override
      public void setSelectedItem(Object anObject) {
        if (!NOT_SELECTABLE_OPTION.equals(anObject)) {
          super.setSelectedItem(anObject);
        } else if (selectionAllowed) {
          // Allow this just once
          selectionAllowed = false;
          super.setSelectedItem(anObject);
        }
      }
    });

    comboBox.addItem(NOT_SELECTABLE_OPTION);
    comboBox.addItem(NORMAL_OPTION);

    frame.add(comboBox);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        frame.setVisible(true);
      }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

这将显示一个组合框,初始选择为“ - Select an Option -”。一旦用户选择了另一个选项,就不可能再次选择原来的选项。

  • [此处](http://stackoverflow.com/a/5231915/230513) 研究了类似的方法。 (2认同)