CellRenderer Probleme bei JList

Spin

Top Contributor
Hallo Java Gemeinde,

ich habe ein Problem mir dem CellRenderer für eine JList.

Ich möchte gerne das man einen Namen und eine Farbe aus einer Combobox asuwählt und dann einer Liste hinzufügt.

Diese Liste soll denn den Namen und als Hintergrundfarbe die gewählte Farbe haben.

Das hinzufügen und entfernen ist sehr einfach , jedoch muss ich den Cellrenderer anpassen um eine Hintergrundfarbe anzeigen zu lassen.

Dazu nehme ich mir ein Panel und male es mit der Farbe an.

Mein Problem ist , dass 1. der name nicht drauf steht und 2. das wenn ich die Farbe in der Combobox ändere , diese auch in der JList geändet wird.

Das rendern wird anscheind ständig aufgerufen.
Habe mir für den Namen ein JLabel gedacht , was ich dann auf das Panel packe ????

Für die farben eine Liste aber wie bekomme ich die zugehörigkeit hin?


Ein renderer für nur farbe und für nur text ist nicht so schwer, aber die kombi , grüße , danke für hilfe



Java:
package lib;

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

import javax.swing.*;

import view.MainWindow;

public class ColorListRenderer extends JPanel implements ListCellRenderer{

	/**
	 * serial version uid
	 */
	private static final long serialVersionUID = 1L;
	
	/**
	 * main window
	 */
	public MainWindow mainWindow = null;
	
	/**
	 * Defeault Constructor
	 * @param {@code MainWindow}
	 */
	public ColorListRenderer(MainWindow mainWindow) {
		this.mainWindow = mainWindow;
	}
	
	/**
	 * String player name
	 */
	public String playerName = "";
	
	/**
	 * Color
	 */
	public Color color = null;

	@Override
	public Component getListCellRendererComponent(JList list, Object obj,
			int row, boolean sel, boolean hasFocus) {
		
		
		
		if(obj instanceof String){
			playerName = (String)obj;
			System.out.println(obj);
		}
		
		this.color = (Color)this.mainWindow.getGameSettingsPanel().getColorComboBox().getSelectedItem();
		this.mainWindow.getGameSettingsPanel().setAColor(this.color);
					
		
		return this;
	}
	
	/**
	 * paint choosen color to combobox
	 */
	@Override
	public void paint(Graphics g) {
		this.setBackground(this.mainWindow.getGameSettingsPanel().getAColor());
		
		g.drawString(playerName, 0, 0);
		// important to call constructor 
		super.paint(g);
	}

}
 

eRaaaa

Top Contributor
Hm? Das mit dem Panel habe ich jetzt nicht verstanden, wozu? Wozu paint überschreiben? Wieso nicht einfach bei JLabel bleiben und dort dann
Code:
setBackground
aufrufen (mit setOpaque(true) evtl. noch)? Die Farbe musst du allerdings irgendwo merken, denn
Java:
this.color = (Color)this.mainWindow.getGameSettingsPanel().getColorComboBox().getSelectedItem();
ist genau das von dir angesprochene Problem! So holt er sich ja immer das selektiere Objekt!
Du musst dir die Farbe also wie schon gesagt merken
 

Spin

Top Contributor
Hallo era, das mit dem JLabel geht soweit und ist vielleicht einfacher ;) Mit dem Panel gehts auch aber da muss ich halt paintComponent verwenden.


Java:
@Override
	public Component getListCellRendererComponent(JList list, Object obj,
			int row, boolean sel, boolean hasFocus) {
		
		name = (String)obj;
		
		JLabel label = new JLabel(name);
		label.setForeground(Color.GREEN);
		
		Color color = (Color)this.mainWindow.getGameSettingsPanel().getColorComboBox().getSelectedItem();
		label.setBackground(color);
		label.setOpaque(true);
		
		this.mainWindow.getGameSettingsPanel().test.add(label);
		
		return label;
	}


Ich weiss aber nicht wie ich es speichern soll.
Ich brauche eine Map , mit key value oder ?

Denn diese methode wird ständig aufgerufen und ich brauche irgendwie eine beziehung. Der Name muss seine farbe kennen irgendwie so ?


eine idee in was ich das speichern soll?
Wollte das jetzt mit einer Arraylist machen. Das JLabel wegpacken , aber wie kann ich dass denn wieder hinzufügen?

grüße und danke :)
 

eRaaaa

Top Contributor
Aiaiai :D

obj ist ja bei dir nur ein String, da würde ich halt jetzt ein Objekt erwarten aus dem ich den String + die Farbe erfassen kann.
So etwas in der Art von
Java:
class Player{
	private String name;

	public Player(String name) {
		this.name = name;
	}

	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}
}

class ColorWrapper{
	private Player player;
	private Color color;
	
	public ColorWrapper(Player player, Color color) {
		this.player = player;
		this.color = color;
	}

	/**
	 * @return the player
	 */
	public Player getPlayer() {
		return player;
	}

	/**
	 * @return the color
	 */
	public Color getColor() {
		return color;
	}
}

ColorWrapper -Objekte dann in der JList ablegen anstelle von nur Strings!
(
also z.B,
model.addElement(new ColorWrapper(new Player(deinTextfeld.getText()), (Color) deineCombobox.getSelectedItem()));
)
Dann würde zumindest für die JList der Renderer wie folgt ausreichen
Java:
class ColorListRenderer extends JLabel implements ListCellRenderer{
	{
		this.setOpaque(true);
	}
	public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
		ColorWrapper cw = (ColorWrapper) value;
		this.setText(cw.getPlayer().getName());
		this.setBackground(cw.getColor());
		return this;
	}
}
 

Spin

Top Contributor
eraaaaaaa du bist so genial :)
danke danke danke :);)


sorry jetzt erst zeit gefunden, mein Problem zu fixen. War im Bug Report schon auf High Prio ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
N AWT jTable CellRenderer AWT, Swing, JavaFX & SWT 6
L Swing CellRenderer für einzelne Zellen? AWT, Swing, JavaFX & SWT 5
G Border der Komponente bei Table CellRenderer überschreiben AWT, Swing, JavaFX & SWT 0
Developer_X Java JTable - Combobox + Checkbox - Cellrenderer + Editor AWT, Swing, JavaFX & SWT 3
S Verständnisproblem mit CellRenderer AWT, Swing, JavaFX & SWT 1
M Swing Jtable CellRenderer Parameter uebergeben AWT, Swing, JavaFX & SWT 4
K Swing JList und veränderte CellRenderer AWT, Swing, JavaFX & SWT 8
G JComboBox mit CellRenderer (Auswahl) AWT, Swing, JavaFX & SWT 11
J JTable: Problem bei CellRenderer AWT, Swing, JavaFX & SWT 3
S Swing Zelle einer JTable hervorheben (ohne CellRenderer) AWT, Swing, JavaFX & SWT 3
S Swing Jlist - CellRenderer/ Selektion AWT, Swing, JavaFX & SWT 2
B JTable CellRenderer AWT, Swing, JavaFX & SWT 5
D Swing JList, CellRenderer und Model AWT, Swing, JavaFX & SWT 6
C Wieso funktionert der CellRenderer nicht? AWT, Swing, JavaFX & SWT 2
J CellRenderer einzelne zellen Hintergrund AWT, Swing, JavaFX & SWT 9
hdi Swing JTable: Mein CellRenderer ist ein Performance-Killer? AWT, Swing, JavaFX & SWT 7
E Swing JTable mit CellRenderer AWT, Swing, JavaFX & SWT 7
J Swing JXTable, vom CellRenderer gerendertes Value holen. AWT, Swing, JavaFX & SWT 5
J JList CellRenderer Null-Layoutpanel AWT, Swing, JavaFX & SWT 4
? Tabelle formatieren - auch ohne CellRenderer? AWT, Swing, JavaFX & SWT 6
M CellEditor und CellRenderer für eigene Klasse AWT, Swing, JavaFX & SWT 4
H JTable und CellRenderer AWT, Swing, JavaFX & SWT 2
M CellRenderer in JTable AWT, Swing, JavaFX & SWT 11
D JList Cellrenderer fügt mehrfach ein AWT, Swing, JavaFX & SWT 2
G JTable, TableModel und CellRenderer AWT, Swing, JavaFX & SWT 3
K Verständnisfrage zum CellRenderer AWT, Swing, JavaFX & SWT 4
G [Problem] CellRenderer und ActionCommand AWT, Swing, JavaFX & SWT 5
K JTable - warum funktioniert mein CellRenderer nicht? AWT, Swing, JavaFX & SWT 9
G CellRenderer, der einige ImageIcons aneinanderreiht AWT, Swing, JavaFX & SWT 5
G JTable: Zellenhöhe mit neuem CellRenderer & Editor AWT, Swing, JavaFX & SWT 17
G CellRenderer funkt net AWT, Swing, JavaFX & SWT 5
T CellRenderer funzt net AWT, Swing, JavaFX & SWT 20
F JTable CellRenderer über boolean AWT, Swing, JavaFX & SWT 12
M Krieg keine CellRenderer Methode hin :( AWT, Swing, JavaFX & SWT 12
C JTable mit JPanel als CellRenderer AWT, Swing, JavaFX & SWT 2
G JTable CellRenderer-Problem AWT, Swing, JavaFX & SWT 4
Juelin Probleme bei Stage.close() AWT, Swing, JavaFX & SWT 23
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
E repaint Probleme AWT, Swing, JavaFX & SWT 13
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
S GridBagLayout - Probleme mit Bilderanzeige AWT, Swing, JavaFX & SWT 3
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
J Probleme mit idividueller Tablecell AWT, Swing, JavaFX & SWT 0
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
J Probleme mit InputDialog AWT, Swing, JavaFX & SWT 4
D JavaFX TextArea Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 1
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
pph080560 JavaFX Probleme mit FX AWT, Swing, JavaFX & SWT 3
M Probleme mit OpenJDK AWT, Swing, JavaFX & SWT 6
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
L JavaFX Probleme beim Installieren JavaFX11 / JavaFX12 -- Eclipse 2019-03 AWT, Swing, JavaFX & SWT 3
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
A Probleme mit gridheight (GridBagLayout) AWT, Swing, JavaFX & SWT 6
U Opaque Probleme AWT, Swing, JavaFX & SWT 3
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
F JavaFX Probleme beim automatischen Konvertieren AWT, Swing, JavaFX & SWT 4
S Probleme mit JComboboxen(?) AWT, Swing, JavaFX & SWT 18
S Swing Probleme mit MigLayout AWT, Swing, JavaFX & SWT 2
C Probleme mit createImage AWT, Swing, JavaFX & SWT 1
J Probleme mit contex Menu (javafx) AWT, Swing, JavaFX & SWT 1
J Probleme bei GameofLife AWT, Swing, JavaFX & SWT 24
S JavaFx - Button ActionEvent Probleme AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 0
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 5
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
D Swing Probleme mit dem Resizing AWT, Swing, JavaFX & SWT 7
G Probleme mit TextArea AWT, Swing, JavaFX & SWT 5
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
K Probleme beim JPasswordField AWT, Swing, JavaFX & SWT 11
G Cardlayout Refresh Probleme AWT, Swing, JavaFX & SWT 2
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
L Probleme mit Programm AWT, Swing, JavaFX & SWT 13
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
Sin137 LayoutManager GridBagLayout Probleme AWT, Swing, JavaFX & SWT 6
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
C Java FX Probleme beim Schließen einer Stage AWT, Swing, JavaFX & SWT 11
M Swing JProgressbar und Outoputstream probleme AWT, Swing, JavaFX & SWT 2
S Swing Probleme mit transparenz der Hintergrundfarbe und JRadioButtons AWT, Swing, JavaFX & SWT 2
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18

Ähnliche Java Themen

Neue Themen


Oben