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
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);
}
}