Swing Schrift in Kopfzeile von JComboBox über ListCellRenderer ändern

kirax

Bekanntes Mitglied
Hi

ich habe eine JComboBox mit eigenem ListCellRenderer, der die Elemente (String) abhängig von einer geg. Bedingung in kursiv darstellen soll.
Das funktioniert auch perfekt für die Dropdown-Liste. Aber wie bekomme ich es hin, dass die Schrift auch unter der gleichen Bedingung in der "Kopfzeile" auf kursiv gesetzt wird? Wenn ich das richtig verstanden habe, wird ja dieses Element auch über den ListCellRenderer gerendert, falls ComboBox.isEditable == false ist. Das ist sie bei mir. Aber der Renderer ändert am ausgewählten Item nichts...

Hier mein Code vom CellRenderer:
Java:
import java.awt.Component;
import java.awt.Font;

import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;

@SuppressWarnings("serial")
public class FormatComboBoxRenderer extends JLabel implements ListCellRenderer {

    public FormatComboBoxRenderer() {
	setOpaque(true);
    }
    
    @Override
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
	    boolean cellHasFocus) {
	
	if (isSelected) {
            setBackground(list.getSelectionBackground());
            setForeground(list.getSelectionForeground());
        } else {
            setBackground(list.getBackground());
            setForeground(list.getForeground());
        }
	
	setText(value.toString());
	
	if (!bedingung) {
	    setFont(list.getFont().deriveFont(Font.ITALIC));
	} else {
	    setFont(list.getFont());
	}
	return this;
    }
}
 

ymene

Bekanntes Mitglied
Die Combobox selbst hat auch noch die Methode setFont. Diese beeinflusst die sichtweise des gerade selektierten Items.

Java:
    JComboBox box = new JComboBox();
    box.setFont( getFont().deriveFont( Font.ITALIC ) ); //An die entsprechende Bedingung knüpfen.

Der Renderer kümmert sich nur um die Items in der Liste, die beim Klick auf das Icon geöffnet wird.

EDIT: Anbei eine mögliche Lösung:

Java:
/**
 * Combobox mit verschiendenen Fonts im Renderer und Editor
 * 
 * @author ymene
 */
public class ComboboxListCellRendererWithDifferentFonts extends JPanel
{

  public ComboboxListCellRendererWithDifferentFonts()
  {
    setLayout( new GridLayout( 2, 1 ) );

    JComboBox box = new FontComboBox();

    box.addItem( "Hallo" );
    box.addItem( 123 );
    box.addItem( "Hallo" );
    box.addItem( 123 );
    box.addItem( "Hallo" );
    box.addItem( 123 );
    box.addItem( "Hallo" );
    box.addItem( 123 );

    add( box );
  }

  public static void main( String[] args )
  {
    JFrame frame = new JFrame( "FontComboBox" );
    frame.setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
    frame.add( new ComboboxListCellRendererWithDifferentFonts() );
    frame.pack();
    frame.setBounds( 300, 300, 500, 500 );
    frame.setVisible( true );
  }
}


class FontComboBox extends JComboBox
{
  public FontComboBox()
  {
    setRenderer( new FontComboBoxRenderer( this ) );

    addItemListener( new ItemListener()
    {

      @Override
      public void itemStateChanged( ItemEvent e )
      {
        if ( e.getItem() instanceof Integer )
        {
          setFont( getFont().deriveFont( Font.ITALIC ) );
        }
        else
        {
          setFont( getFont().deriveFont( Font.BOLD ) );
        }
      }
    } );
  }
}


class FontComboBoxRenderer extends JLabel implements ListCellRenderer
{
  final JComboBox combobox;

  public FontComboBoxRenderer( JComboBox box )
  {
    this.combobox = box;
    setOpaque( true );
  }

  @Override
  public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected,
                                                 boolean cellHasFocus )
  {
    if ( isSelected )
    {
      setBackground( list.getSelectionBackground() );
      setForeground( list.getSelectionForeground() );
    }
    else
    {
      setBackground( list.getBackground() );
      setForeground( list.getForeground() );
    }

    setText( value.toString() );

    if ( value instanceof Integer )
    {
      setFont( list.getFont().deriveFont( Font.ITALIC ) );
    }
    else
    {
      setFont( list.getFont().deriveFont( Font.BOLD ) );
    }
    return this;
  }
}
 
Zuletzt bearbeitet:

kirax

Bekanntes Mitglied
Cool danke - funktioniert.

Der Teil wars:

[JAVA=51]if ( e.getItem() instanceof Integer )
{
setFont( getFont().deriveFont( Font.ITALIC ) );
}
else
{
setFont( getFont().deriveFont( Font.BOLD ) );
}[/code]
:)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Swing TextPanel Schrift untereinander und auf einer Höhe AWT, Swing, JavaFX & SWT 3
S Swing Schrift sehr klein Ubuntu/eclipse AWT, Swing, JavaFX & SWT 18
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
Y Listview Textfield vergrößern, Schrift anpassen AWT, Swing, JavaFX & SWT 0
M Schrift "malen" AWT, Swing, JavaFX & SWT 11
V Wie kann ich die Schrift in Java vollkommen anzeigen AWT, Swing, JavaFX & SWT 1
S Schrift ändern in JDialog AWT, Swing, JavaFX & SWT 3
B Swing Transparentes JPanel, Schrift verschmiert AWT, Swing, JavaFX & SWT 22
I Schrift und Farbe formatieren, und zwar pro Linie... AWT, Swing, JavaFX & SWT 4
S kursive Schrift in JTable AWT, Swing, JavaFX & SWT 4
J Swing Monospace-Schrift für alle Systeme AWT, Swing, JavaFX & SWT 3
D SWT TabItem Farbe der Schrift ändern AWT, Swing, JavaFX & SWT 3
T SWT Tabellen Kopf Schrift bearbeiten AWT, Swing, JavaFX & SWT 2
Saxony SWT Right To Left (arabische Schrift) AWT, Swing, JavaFX & SWT 8
D schrift wird nicht vollständig im button angezeigt AWT, Swing, JavaFX & SWT 4
D Schrift im Programm ändern? AWT, Swing, JavaFX & SWT 2
E JTable letzte Zeile in Fett schrift? AWT, Swing, JavaFX & SWT 3
M Schrift in Menüleiste mit Office L&F AWT, Swing, JavaFX & SWT 4
O JButton Rand um Schrift unsichtbar machen AWT, Swing, JavaFX & SWT 2
D Wie vergrößere ich die schrift auf einem Jbutton AWT, Swing, JavaFX & SWT 2
G schrift eigenschaftenmodul AWT, Swing, JavaFX & SWT 3
T Die Schrift in verschiedenen Farben blinken zu lassen AWT, Swing, JavaFX & SWT 2
L Schrift umranden AWT, Swing, JavaFX & SWT 2
G JList Schrift ist schwer zu erkennen AWT, Swing, JavaFX & SWT 5
C Schrift mit Schatten bzw Antialiasing AWT, Swing, JavaFX & SWT 2
J Vertikale Schrift im AWT AWT, Swing, JavaFX & SWT 4
Z JTextPane (text/html): Schrift festlegen AWT, Swing, JavaFX & SWT 5
Z bei kleinen Buttons verschwindet Schrift, obwohl Platz wäre AWT, Swing, JavaFX & SWT 5
G Schrift vertikal ausrichten AWT, Swing, JavaFX & SWT 2
javasdann JTable Kopfzeile in Windows Look&Feel unschön. AWT, Swing, JavaFX & SWT 3
hannibalstgt Fehler bei JCOMBOBOX GUI Anzeige AWT, Swing, JavaFX & SWT 4
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
N Keylistener & JComboBox AWT, Swing, JavaFX & SWT 5
R JComboBox abfragen AWT, Swing, JavaFX & SWT 1
Esquid If Befehl bei JComboBox AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
D JComboBox Strings aus JTextFields zuordnen AWT, Swing, JavaFX & SWT 2
F JComboBox und Model AWT, Swing, JavaFX & SWT 10
I Editierbare JComboBox, die nur Ganzzahlen als Eingabewerte zulässt AWT, Swing, JavaFX & SWT 3
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
Hatsi09 JCombobox default wert AWT, Swing, JavaFX & SWT 6
D Swing JCombobox Aktion löscht Grafik AWT, Swing, JavaFX & SWT 1
cezary Choice, JComboBox oder JList AWT, Swing, JavaFX & SWT 5
R Swing Java9 NullPointerException bei JComboBox AWT, Swing, JavaFX & SWT 13
ralfb1105 Swing JComboBox update der Daten AWT, Swing, JavaFX & SWT 8
D Swing JCombobox Weiße Leerzeilen AWT, Swing, JavaFX & SWT 10
G JComboBox: Arrow-Button permanent anzeigen AWT, Swing, JavaFX & SWT 4
D Swing Java JComboBox Example AWT, Swing, JavaFX & SWT 16
K Swing JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 4
D Swing "blaues" Element aus JComboBox erhalten AWT, Swing, JavaFX & SWT 6
F JComboBox und Einträge AWT, Swing, JavaFX & SWT 3
gamillton Swing JComboBox mit extra Inhalt + breiteres Popupmenü AWT, Swing, JavaFX & SWT 0
T JPanelsteuerung mit JComboBox AWT, Swing, JavaFX & SWT 5
N Swing Duplikate im Jcombobox vermeiden AWT, Swing, JavaFX & SWT 15
L Swing JComboBox kann nicht erstellt werden! AWT, Swing, JavaFX & SWT 2
C JComboBox Objecte übergeben und Eintrag auswählen AWT, Swing, JavaFX & SWT 3
M Swing JComboBox mit Laufwerksbuchstaben (Windows) AWT, Swing, JavaFX & SWT 6
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
D Swing JComboBox (DefaultComboBoxModel) überschreibt Eintrag beim erstellen AWT, Swing, JavaFX & SWT 0
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
3 JComboBox - Action - Auslesen & Umwandeln AWT, Swing, JavaFX & SWT 9
M Alle Schriftarten in JComboBox AWT, Swing, JavaFX & SWT 5
M Swing JComboBox eigenes Design AWT, Swing, JavaFX & SWT 3
Sin137 JComboBox mit Generics AWT, Swing, JavaFX & SWT 14
R JComboBox erweitern AWT, Swing, JavaFX & SWT 5
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
V Editierbare JComboBox AWT, Swing, JavaFX & SWT 2
D Swing JCombobox in einem JTable vorbelegen AWT, Swing, JavaFX & SWT 4
F neuen Menüpunkt in jcombobox einfügen AWT, Swing, JavaFX & SWT 1
F Swing Jcombobox mit manueller Rückgabe AWT, Swing, JavaFX & SWT 4
W JComboBox auffristen nach Listenänderung AWT, Swing, JavaFX & SWT 20
S JComboBox mit mehreren Spalten? AWT, Swing, JavaFX & SWT 6
J JComboBox + ItemListener AWT, Swing, JavaFX & SWT 12
T Swing jComboBox auslesen mit Datenbankanbindung AWT, Swing, JavaFX & SWT 3
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0
D Swing Erstes Item einer JCombobox in JTable anzeigen AWT, Swing, JavaFX & SWT 2
N JComboBox in JTable [Swing] -> totaler UI-Einsteiger AWT, Swing, JavaFX & SWT 3
H Swing jComboBox Ausgabe -1/null AWT, Swing, JavaFX & SWT 4
C Arrow Farbe bei JComboBox AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
O JTextfield und JComboBox Wert in SQL Database speichern AWT, Swing, JavaFX & SWT 4
S JComboBox UTF-8 Codierung zuweisen AWT, Swing, JavaFX & SWT 5
A JComboBox mit Array aktualisieren AWT, Swing, JavaFX & SWT 7
S JComboBox nach auswahl erneuern AWT, Swing, JavaFX & SWT 4
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
A Swing per JComboBox gewünschtes Attribut auswählen und Komponenten passen sich an AWT, Swing, JavaFX & SWT 7
I JComboBox gibt bei ausgewählten ITem NullPointer an... AWT, Swing, JavaFX & SWT 3
D Swing JCombobox - Tooltip Location ändern AWT, Swing, JavaFX & SWT 4
J JComboBox Dropdown Icon AWT, Swing, JavaFX & SWT 2
M Swing Mix JComboBox - JButton? AWT, Swing, JavaFX & SWT 6
A Swing bei Auswahl und klick eines JComboBox buttons die Klasse eines anderen Projekts aufrufen AWT, Swing, JavaFX & SWT 3
F Swing jComboBox auslesen AWT, Swing, JavaFX & SWT 6
O Swing TableCellRenderer und JComboBox AWT, Swing, JavaFX & SWT 4
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
C Swing JComboBox, ItemListener gibt 2x aus AWT, Swing, JavaFX & SWT 2
O JComboBox - autom. Selektieren AWT, Swing, JavaFX & SWT 6
J JComboBox - wie getSelectedItem() überschreiben? AWT, Swing, JavaFX & SWT 8
S Swing Jcombobox und array AWT, Swing, JavaFX & SWT 6
D Swing JComboBox aktualisieren AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben