Merkwürdiges Verhalten von ListCellRender

Status
Nicht offen für weitere Antworten.

materthron

Mitglied
Ich hab mir den November TechTip von Sun angesehen und den dort verwendeten Code in ein kleines Programm eingebaut, um zu sehen wie das alles so funktioniert.

CellRendererTest
Code:
package November06;

import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;

public class CellRendererTest {

  public static void main(String[] args) {
    String[] items = new String[10];
    
    //Create items
    for(int i=0; i<items.length; i++) {
      items[i] = "Item "+i;
    }
///////////////////
// Stripe List
//////////////////
    JList stripeList = new JList(items);
    stripeList.setCellRenderer( new StripeRenderer() );
    
    JScrollPane stripeListSP = new JScrollPane(stripeList);

//////////////////
//  Gradient List
/////////////////
    JList gradientList = new JList(items);
    stripeList.setCellRenderer( new GradientSelectionRenderer() );
    
    JScrollPane gradientListSP = new JScrollPane(gradientList); 

    
    JFrame frame = new JFrame("CellRendererTest");
    frame.setLayout( new FlowLayout() );
    frame.add(stripeListSP);
    frame.add(gradientListSP);
    
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(350,200);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }

}

GradientSelectionRenderer
Code:
package November06;

import java.awt.Color;
import java.awt.Component;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.DefaultListCellRenderer;
import javax.swing.JLabel;
import javax.swing.JList;

class GradientSelectionRenderer extends DefaultListCellRenderer {
  private boolean drawGradient = false;

  public Component getListCellRendererComponent(JList list, Object value,
      int index, boolean isSelected, boolean cellHasFocus) {
    JLabel label = (JLabel) super.getListCellRendererComponent(list, value,
        index, isSelected, cellHasFocus);
    drawGradient = false;
    label.setOpaque(true);
    if (isSelected) {
      drawGradient = true;
      label.setForeground(Color.WHITE);
      label.setBackground(Color.BLUE);
      label.setOpaque(false);
    }
    return label;
  }

  protected void paintComponent(Graphics g) {
    if (drawGradient) {
      Graphics2D gfx = (Graphics2D) g.create();
      GradientPaint gradient = new GradientPaint(0, 0, Color.BLUE, 0, 10,
          Color.BLACK);
      gfx.setPaint(gradient);
      gfx.fillRect(0, 0, getWidth(), getHeight());
      gfx.dispose();
    }
    super.paintComponent(g);
  }
}

StripeRenderer
Code:
package November06;

import java.awt.Color;
import java.awt.Component;

import javax.swing.DefaultListCellRenderer;
import javax.swing.JLabel;
import javax.swing.JList;

class StripeRenderer extends DefaultListCellRenderer {
  public Component getListCellRendererComponent(JList list, Object value,
      int index, boolean isSelected, boolean cellHasFocus) {
    JLabel label = (JLabel) super.getListCellRendererComponent(list, value,
        index, isSelected, cellHasFocus);

    if (index % 2 == 0) {
      label.setBackground(new Color(230,230,255));
    }
    return label;
  }
}

Folgendes merkwürdiges verhalten:
Beim Ausführen des Programms CellRendererTest , ignoriert JList stripeList den gesetzten ListCellRender.
Wenn man nun aber den Code für die gradientList auskommentiert, funktioniert stripeList auf einmal.

JavaBug? Denkfehler? Gottes Wille!

lg materthron
 
B

Beni

Gast
Zeile 31 in CellRendererTest ist Müll, das sollte "gradientList.set..." heissen.
 

materthron

Mitglied
Ein erneutes Beispiel von Die-Bäume-vor-lauter-Wald-nicht-sehen: Ich hab den Code sicherlich 20 mal durchgesehen, aber DU hast mich erst drauf hinweisen müssen!

Danke vielmals!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Merkwürdiges Verhalten vom JMenu AWT, Swing, JavaFX & SWT 4
F Merkwürdiges Verhalten zeichnen sperater Thread AWT, Swing, JavaFX & SWT 13
pinerski Swing JList merkwürdiges Verhalten beim sortieren AWT, Swing, JavaFX & SWT 3
K JList - merkwürdiges Verhalten bei Leertaste (unter Focus) AWT, Swing, JavaFX & SWT 7
S Swing JTable - merkwürdiges Selektionsverhalten AWT, Swing, JavaFX & SWT 3
B JComboBox - Merkwürdiges Focusverhalten. AWT, Swing, JavaFX & SWT 2
K [Swing] Merkwürdiges Layoutverhalten bei GridBagLayout AWT, Swing, JavaFX & SWT 2
H Merkwürdiges Aussehen einer GUI-Komponente AWT, Swing, JavaFX & SWT 2
Juelin Komisches Verhalten des JavaFXprogrammes AWT, Swing, JavaFX & SWT 4
Hatsi09 JavaFx Mediaplayer seltsames Verhalten AWT, Swing, JavaFX & SWT 0
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
pkm kryptisches Verhalten bei GridLayout AWT, Swing, JavaFX & SWT 4
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
T JavaFX Verhalten ImageView bei grossen BIlddateien AWT, Swing, JavaFX & SWT 0
HarleyDavidson Swing Seltsames Verhalten GridBagLayout AWT, Swing, JavaFX & SWT 11
P JFrame langsam / seltsames Verhalten AWT, Swing, JavaFX & SWT 6
R Ändern Default-Verhalten von JScrollpane in einer JScrollpane AWT, Swing, JavaFX & SWT 1
S JTabbedProblem - "komisches" Verhalten AWT, Swing, JavaFX & SWT 2
P Swing Seltsames ActionListener-Verhalten AWT, Swing, JavaFX & SWT 7
T Wie ist das "Lookup-Verhalten" von JList, JCombobox änderbar? AWT, Swing, JavaFX & SWT 4
D Seltsames Verhalten meiner CheckBoxen AWT, Swing, JavaFX & SWT 7
N Swing Dynamisches Verhalten bei Änderung Fenstergröße AWT, Swing, JavaFX & SWT 6
E Swing Fehlerhaftes Verhalten bei gleichzeitigen Verwendnen von PopUpMenu und JDialog?! AWT, Swing, JavaFX & SWT 5
Ollek JTextField Verhalten mit LayoutManager AWT, Swing, JavaFX & SWT 8
E Swing Maskformatter Verhalten?! AWT, Swing, JavaFX & SWT 5
A JTreeTable - unerklärliches Verhalten von getValueAt AWT, Swing, JavaFX & SWT 2
M Komisches Verhalten: JCombobox mit KeyListener AWT, Swing, JavaFX & SWT 13
hdi SWT Shell: Auslagerung von Code verändert Verhalten AWT, Swing, JavaFX & SWT 6
U Verhalten des CheckBoxCellEditors AWT, Swing, JavaFX & SWT 3
H2SO3- AWT seltsammes verhalten eines Panels AWT, Swing, JavaFX & SWT 9
I Hyper-Link ähnliches Verhalten AWT, Swing, JavaFX & SWT 5
L JFrame-Verhalten bei Klick auf Schließen-Kreuz ändern AWT, Swing, JavaFX & SWT 3
R JProgressBar-Verhalten AWT, Swing, JavaFX & SWT 5
dzim [SWT] Seltsames verhalten bei TableViewer mit TextCellEditor AWT, Swing, JavaFX & SWT 5
G Seltsames Verhalten JButton AWT, Swing, JavaFX & SWT 6
J JScrollBar scroll-Verhalten auf 2 JButtons umleiten? AWT, Swing, JavaFX & SWT 2
ARadauer bestimmtes verhalten für jtable AWT, Swing, JavaFX & SWT 6
M Seltsames Verhalten Tooltip und JDialog AWT, Swing, JavaFX & SWT 8
S Wie verhalten sich transparente Grafiken? AWT, Swing, JavaFX & SWT 5
sparrow Tasten mit Umlauten im KeyListener verhalten sich seltsam AWT, Swing, JavaFX & SWT 4
S Seltsames verhalten des Befehles getContentPane().add(.) AWT, Swing, JavaFX & SWT 7
M drawImage mit seltsamen verhalten AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben