JComboBox Selection-Marker entfernen?

Hallo Leute,

ich glaube, ich stehe gerade auf dem Schlauch - zum Glück ist heute Freitag…

Bin gerade dabei eine JComboBox in eine Gui einzubauen, die einen speziellen Font nutzen soll.
So weit so gut, leider scheint dieses Markierungshäckchen im Font nicht vorhanden zu sein, so daß nun ein Quadrat dargestellt wird :frowning:

Ein Bild sagt mehr als 1000 Worte:

Bestimmt eine total blöde Frage, aber wie kann ich diesen Selection-Marker (Häckchen) ‚abschalten‘? :confused:

was ein Selection-Marker ist, ist mir unbekannt, auch was dein Bild darstellt,
vielleicht wird es klarer, wenn du Code dazu postest oder dich an ein Standard-Beispiel wie
http://java-tutorial.org/jcombobox.html

hälts, ergänzt um deine Font oder was immer alles nötig ist,
wie sieht mit diesem Code, dieser ComboBox ein Screenshot mit deinem Problem aus?

meinst du das Dreieck, auf das man klicken muss um die ComboBox aufzuklappen?
mit der Liste der Items hat das ja nicht direkt zu tun…, dein Bild ist überhaupt nicht als ComboBox erkennbar

welche Werte sind im Model deiner ComboBox, 1-4 und noch ein fünftes Default-Element?

Hallo SlaterB,

Danke für Deinen Hinweis - ja, es ist der 13. :rolleyes:

Ich nutze tatsächlich nur eine ganz simple JComboBox, aber das Problem scheint wohl das OS zu sein.
Da ich gerade auf OSX entwickle, sieht das Beispiel von Dir so aus:

Es ist ein kleines Häckchen vor dem selektierten Item zu sehen (das meinte ich mit ‘Selection-Marker’).

Setze ich nun den vorgegebenen Font ein, sieht das Ganze so aus:

Ein schneller Test auf Windows 7 ergab dann das ‘überraschende’ Ergebnis, daß es dort ohne Probleme funktioniert :twisted:

Da das Problem OS-abhängig zu sein scheint, wird mir wohl nur ein Workaround übrig bleiben (Default-Font / alternativer (vollständiger) Font).

…es sei denn es hat noch jemand eine geniale Idee :idea:

Ach so, den Beispielcode hatte ich übrigens nur um folgende Methode erweitert und durch

bundeslandAuswahl.setFont(createFont());

aktiviert:

    static Font createFont()
    {
        Font ttfreal = null;
        
        try
        {
          //InputStream is = JComboBoxBeispiel.class.getResourceAsStream("./erasdust.ttf");
          InputStream is = new FileInputStream(new File("erasdust.ttf"));
          Font ttfbase = Font.createFont(Font.TRUETYPE_FONT, is);
          ttfreal = ttfbase.deriveFont(Font.PLAIN, 20);
          GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(ttfreal);         
        } 
        catch (FontFormatException e)
        {
          e.printStackTrace();
        } 
        catch (IOException e)
        {
          e.printStackTrace();
        }
        
        return ttfreal;
      }

…einen passenden Renderer schreiben?

thx - das war genau das richtige Stichwort :cool:

du könntest dem Font File ein Häckchen spendieren
oder anderes L&F nutzen
oder halt wenns schön javamäßig haben willst wie schon erwähnt nen passenden Renderer schreiben ohne das Häckchen

Danke für die Ideen und den Schubs in die richtige Richtung :slight_smile:

Habe jetzt einen ganz einfachen Renderer implementiert…

  class SimpleComboBoxRenderer extends JLabel implements ListCellRenderer<Object>
  {
    public SimpleComboBoxRenderer()
    {
      setOpaque(true);
    }

    public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus)
    {
      setText("   " + value.toString());

      Color background = null;
      Color foreground = null;

      JList.DropLocation dropLocation = list.getDropLocation();
      
      if (dropLocation != null && !dropLocation.isInsert() && dropLocation.getIndex() == index)
      {
        // background = Color.BLUE;
        // foreground = Color.WHITE;
      } 
      else if (isSelected)
      {
        background = Color.BLUE;
        foreground = Color.WHITE;
      } 
      else
      {
        // background = Color.BLUE;
        // foreground = Color.WHITE;
      }
      
      setBackground(background);
      setForeground(foreground);

      return this;
    }
  }

…und das Ergebnis ist wie gewollt !

Bedenke eines: unsere Kunden hätten dann angerufen so frei nach dem Motto “Was habt ihr wieder gemacht, im Pulldownmenü habe ich vorm ausgewählten Eintrag immer ein Häckchen, jetzt ist es weg!!! Machts anders!!!111elf”… /whineende

So’n Haken sollte sich auch notfalls als Icon reinzeichnen lassen.

Das Gute ist, der Großteil der User nutzt Windoof in verschiedenen Variationen, denen wird es also nicht auffallen :slight_smile:
Die Entwicklung läuft meist unter Linux & Win - nur aus Kompatibilitätsgründen bin ich heute mal wieder auf den Mac gegangen und dann sowas…

Aber Ende gut, (hoffentlich) alles gut!