Hallo liebe Gemeinde,
ich habe eine kleine Frage in Bezug auf eine JTable welche in einer Spalte JCombobox -en beinhaltet.
Mein Problem ist das wenn in einer JCombobox etwas ändere sollte diese Änderung (ein ausgrauen des Gewählten Eintrags und das setzen eines Icons ) auch in den anderen JComboBox eintreten. Diese Änderung funktioniert auch für jede JCombobox für sich. Mein Gedanke ist ja das Java fast immer mit Referenzen arbeitet daher sollte die Änderung ja für jede ComboBox übernommen werden. Was für mich heist wenn ich z.b. in Zeile eins den ersten Eintrag wähle müsste dieser in Zeile zwei der erste Eintrag ja ausgegraut sein.
Einige Auszüge aus dem Code
Ich hoffe ihr könnt mir helfen.
lg KOKser
ich habe eine kleine Frage in Bezug auf eine JTable welche in einer Spalte JCombobox -en beinhaltet.
Mein Problem ist das wenn in einer JCombobox etwas ändere sollte diese Änderung (ein ausgrauen des Gewählten Eintrags und das setzen eines Icons ) auch in den anderen JComboBox eintreten. Diese Änderung funktioniert auch für jede JCombobox für sich. Mein Gedanke ist ja das Java fast immer mit Referenzen arbeitet daher sollte die Änderung ja für jede ComboBox übernommen werden. Was für mich heist wenn ich z.b. in Zeile eins den ersten Eintrag wähle müsste dieser in Zeile zwei der erste Eintrag ja ausgegraut sein.
Einige Auszüge aus dem Code
Java:
public class EditableBoxModel extends DefaultComboBoxModel {
private static final long serialVersionUID = -8133845336102334803L;
public EditableBoxModel(Vector<Waehlbar<String>> data) {
super(data);
}
@SuppressWarnings("unchecked")
@Override
public void setSelectedItem(Object anObject) {
if (anObject instanceof Waehlbar && ((Waehlbar) anObject).istWaehlbar()) {
super.setSelectedItem(anObject);
}
}
}
Java:
public class EditableCellRenderer extends DefaultListCellRenderer {
private static final long serialVersionUID = 5109077208165846725L;
private Daten data = null;
public EditableCellRenderer() {
}
public EditableCellRenderer(Daten data) {
this.data = data;
}
@SuppressWarnings("unchecked")
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
JLabel comp = (JLabel) super.getListCellRendererComponent(list, value,
index, isSelected, cellHasFocus);
if (value instanceof Waehlbar) {
if (data != null) {
LagerObjekt obj = data.getPalletenStellplaetze().get(
comp.getText());
if (obj == null)
obj = data.getBlockLager().get(comp.getText());
if (((Waehlbar) value).istWaehlbar() || !obj.istGewaehlt()) {
comp.setForeground(list.getForeground());
comp.setIcon(Daten.okeyIcon);
} else {
comp.setForeground(Color.LIGHT_GRAY);
comp.setIcon(Daten.nichtIcon);
}
} else {
if (((Waehlbar) value).istWaehlbar()) {
comp.setForeground(list.getForeground());
} else {
comp.setForeground(Color.LIGHT_GRAY);
}
}
}
return comp;
}
Java:
....
TableColumn zielSpalte = tabelle.getColumnModel().getColumn(3);
final JComboBox boxZiel = new JComboBox();
boxZiel.setModel(new EditableBoxModel(stellplaetze.get(1)));
boxZiel.setRenderer(new EditableCellRenderer(data));
boxZiel.addItemListener(new JComboBoxItemListener(panel));
zielSpalte.setCellEditor(new DefaultCellEditor(boxZiel));
....
Ich hoffe ihr könnt mir helfen.
lg KOKser