# JLIST / Model erster EINTRAG



## Zentrum (26. Mai 2010)

Hallo,

ich würde gern meinen ersten Eintrag entwerder in Schriftart Fett oder mit einem Hintergrund belegen, weil damit soll ausgedrückt werden, dies ist das Hauptmerkmal...


Würd mich freuen wenn ihr Lösungsansätze gibt... hab schon gegoogelt

Grüße


----------



## zentruum (26. Mai 2010)

am einfachsten wäre eig. wenn der erste Eintrag immer makiert wird, und die anderen man garnicht anklicken kann.


----------



## Gast2 (26. Mai 2010)

Und was hat google gesagt? 
Du brauchst einen eigenen ListRenderer!!!

EDIT: Wenn du sowas willst dann würde icht tippen, dass du immer setSelectedIndex überschreiben solltest und immer auf 0(1.Eintrag) setzen.


----------



## MarcB (26. Mai 2010)

Der ListCellRenderer könnte in etwa so aussehen:


```
public class FirstRowFatRenderer implements ListCellRenderer {

    private final ListCellRenderer renderer;

    public FirstRowFatRenderer(ListCellRenderer renderer) {
        this.renderer = renderer;
    }

    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        Component c = renderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
        if (index == 0) {
            Font font = c.getFont().deriveFont(Font.BOLD);
            c.setFont(font);
        } else {
            Font font = c.getFont().deriveFont(Font.PLAIN);
            c.setFont(font);
        }
        return c;
    }
}
```

Das ist ein Decorator, d.h. er wrappt den normalen ListCellRenderer. Also z.B. so verwenden:

```
list.setCellRenderer(new FirstRowFatRenderer(new DefaultListCellRenderer()));
```


----------



## zentrum (26. Mai 2010)

wenn ich setselec...index überschreiben will muss ich eine neue Klasse schreiben die von JList eerbt oder?


----------



## Gast2 (26. Mai 2010)

So gehts auch:


```
jList.addListSelectionListener(new ListSelectionListener() {
			
			@Override
			public void valueChanged(ListSelectionEvent e) {
				jList.setSelectedIndex(0);
				
			}
		});
```


----------



## zentrum (26. Mai 2010)

diese Methode muss doch nur einmal ausgeführt werden oder? 


```
public HauptPanel() {
		initComponents();
		initDispoTabel();
		initSetEditable();
		initButtonGroup();
		initjList();
	}


	private void initjList() {
		  jList1.addListSelectionListener(new ListSelectionListener() {
	           
				@Override
				public void valueChanged(ListSelectionEvent e) {
					  jList1.setSelectedIndex(1);
					
				}
	        });
		
	}
```



lasse es direkt beim inizialisieren ... machen?!


----------



## Gast2 (26. Mai 2010)

welche Methode meinst du??? Du musst den Listener nur einmal registrieren und jedes mal wenn du inde Liste woanders hinklickst wird die valueChanged Methode aufgerufen und setzt den selektierten Index... Der 1. Wert fängt bei 0 an!!!

Kennst du das Listenerkonzept???


----------



## zentrum (26. Mai 2010)

ja doch,

stand grad auf dem Schlauch das ist ja ein Listener, der soll aber das auch anzeigen sobald der erste eintrag in die Liste hineingespeichert wird, ohne erst draufdrücken zumüssen^^


----------



## Gast2 (26. Mai 2010)

des ist ja wohl jetzt nicht mehr schwer bissl selber nachdenken schadet nicht...
die methode die du dazu brauchst hast du schon benutzt...:rtfm:


----------



## zentrum (26. Mai 2010)

ich komm net auf den Lösungsweg?!


----------



## Gast2 (26. Mai 2010)

Sorry du solltest schon auch verstehen was du da machst...
Welche Methode musst du wohl verwenden damit der 1. Eintrag selektiert wird???
JList API anschauen...


----------

