Hi
Ich habe ein Problem mit meiner JList: Seit ich einen eigene Cellrenderer habe und versuche ein JPanel mit JLabels einzufügen werden alle Listenelemente mehrfach eingefügt.
Das aussehen der einzelnen Elemente hab ich unter Kontrolle. Nur die Position...
Beim ersten Element sieht alles super aus.
aber wenn ich das 2 Element eingefügt wird dann sieht die Liste folgendermaßen aus:
2.Element 1.Element
1.Element 2.Element
beim 3. Element siehts so aus:
2.Element 3.Element 1.Element
3.Element 1.Element 2.Element
1.Element 2.Element 3.Element
usw.:lol:
dabei ist die Liste artikelEingescanntListe.setLayoutOrientation(JList.VERTICAL); ohne WRAP ausgerichtet.
die Klasse die in die Liste eingefügt wird sieht so aus:
und ein paar "Getter"
und der CellRenderer sieht im Moment so aus:
Was mache ich falsch? :cry: ???:L
Bitte um Hilfe Ich glaub ich hab nen Brett vorm Kopf. :?:
Ich habe ein Problem mit meiner JList: Seit ich einen eigene Cellrenderer habe und versuche ein JPanel mit JLabels einzufügen werden alle Listenelemente mehrfach eingefügt.
Das aussehen der einzelnen Elemente hab ich unter Kontrolle. Nur die Position...
Beim ersten Element sieht alles super aus.
aber wenn ich das 2 Element eingefügt wird dann sieht die Liste folgendermaßen aus:
2.Element 1.Element
1.Element 2.Element
beim 3. Element siehts so aus:
2.Element 3.Element 1.Element
3.Element 1.Element 2.Element
1.Element 2.Element 3.Element
usw.:lol:
dabei ist die Liste artikelEingescanntListe.setLayoutOrientation(JList.VERTICAL); ohne WRAP ausgerichtet.
die Klasse die in die Liste eingefügt wird sieht so aus:
Code:
public class ListenPosten
{
private JLabel rechnungspostenArtikelOderWarenGruppeLabel;
private JLabel rechnungspostenGebindeinhaltLabel;
private JLabel rechnungspostenGebindeLabel;
private JLabel rechnungspostenAnzahlLabel;
private JLabel rechnungspostenPreisLabel;
private JLabel rechnungspostenGesamtPreisLabel;
private JLabel rechnungspostenRabattLabel;
public ListenPosten(String rechnungspostenArtikelOderWarenGruppeString,
String rechnungspostenGebindeinhaltString, String rechnungspostenGebindeString,
String rechnungspostenAnzahlString, String rechnungspostenPreisString,
String rechnungspostenGesamtPreisString, String rechnungspostenRabattPreisString, int Stelle)
{
rechnungspostenArtikelOderWarenGruppeLabel = new JLabel(rechnungspostenArtikelOderWarenGruppeString);
rechnungspostenGebindeinhaltLabel = new JLabel(rechnungspostenGebindeinhaltString);
rechnungspostenGebindeLabel = new JLabel(rechnungspostenGebindeString);
rechnungspostenAnzahlLabel = new JLabel(rechnungspostenAnzahlString);
rechnungspostenPreisLabel = new JLabel(rechnungspostenPreisString);
rechnungspostenGesamtPreisLabel = new JLabel(rechnungspostenGesamtPreisString);
rechnungspostenRabattLabel = new JLabel(rechnungspostenRabattPreisString);
}
...
und der CellRenderer sieht im Moment so aus:
Code:
public class MyCellRenderer extends JPanel implements ListCellRenderer {
private static final long serialVersionUID = 8400636002225624699L;
public MyCellRenderer()
{
// Konstruktor des JPanels mit FlowLayout aufrufen
super(new FlowLayout(FlowLayout.LEFT));
// JPanel undurchsichtig machen
this.setOpaque(true);
rechnungspostenpane = new JPanel();
rechnungspostenpane.setOpaque(false);
this.add(rechnungspostenpane);
}
public Component getListCellRendererComponent(JList artikelEingescanntlistModel, // JList Objekt
Object value, // anzuzeigende Komponente
int index, // Zellenindex
boolean istSelektiert, // Ist selektiert?
boolean hatFokus) // Hat den Fokus?
{
Dimension Dimie = new Dimension(80, feldhoehe);
Dimension Dimieklein = new Dimension(70, feldhoehe);
Dimension Dimiemittel = new Dimension(90, feldhoehe);
Dimension Dimiegroß = new Dimension(280, feldhoehe);
((ListenPosten)value).getRechnungspostenArtikelOderWarenGruppeLabel().setPreferredSize(Dimiegroß);
((ListenPosten)value).getRechnungspostenGebindeinhaltLabel().setPreferredSize(Dimieklein);
((ListenPosten)value).getRechnungspostenGebindeLabel().setPreferredSize(Dimie);
((ListenPosten)value).getRechnungspostenAnzahlLabel().setPreferredSize(Dimie);
((ListenPosten)value).getRechnungspostenPreisLabel().setPreferredSize(Dimie);
((ListenPosten)value).getRechnungspostenGesamtPreisLabel().setPreferredSize(Dimiemittel);
((ListenPosten)value).getRechnungspostenRabattLabel().setPreferredSize(Dimiemittel);
((ListenPosten)value).getRechnungspostenArtikelOderWarenGruppeLabel().setFont(allesandere);
((ListenPosten)value).getRechnungspostenGebindeinhaltLabel().setFont(allesandere);
((ListenPosten)value).getRechnungspostenGebindeLabel().setFont(allesandere);
((ListenPosten)value).getRechnungspostenAnzahlLabel().setFont(allesandere);
((ListenPosten)value).getRechnungspostenPreisLabel().setFont(allesandere);
((ListenPosten)value).getRechnungspostenGesamtPreisLabel().setFont(allesandere);
((ListenPosten)value).getRechnungspostenRabattLabel().setFont(allesandere);
// dem Rechnungsosten nacheinander Artikelbezeichnung oder Warengruppe
rechnungspostenpane.add(((ListenPosten)value).getRechnungspostenArtikelOderWarenGruppeLabel());
// GebindeInhalt
rechnungspostenpane.add(((ListenPosten)value).getRechnungspostenGebindeinhaltLabel());
// Gebinde
rechnungspostenpane.add(((ListenPosten)value).getRechnungspostenGebindeLabel());
// Anzahl
rechnungspostenpane.add(((ListenPosten)value).getRechnungspostenAnzahlLabel());
// Preis
rechnungspostenpane.add(((ListenPosten)value).getRechnungspostenPreisLabel());
// Gesamtpreis
rechnungspostenpane.add(((ListenPosten)value).getRechnungspostenGesamtPreisLabel());
// und vielleicht später noch Rabatt hinzufügen
rechnungspostenpane.add(((ListenPosten)value).getRechnungspostenRabattLabel());
// Hintergrundfarbe des JPanels bei Fokuswechseln definieren
if(istSelektiert) rechnungspostenpane.setBackground(Color.lightGray); // Hat den Fokus
else setBackground(artikelEingescanntlistModel.getBackground()); // Hat den Fokus nicht
return this;
}
}
Was mache ich falsch? :cry: ???:L
Bitte um Hilfe Ich glaub ich hab nen Brett vorm Kopf. :?: