Hallo,
Ich habe ein Fenster entwickelt, welches ein zwei Parameter hat: Ein Abstraktes Tabellenmodell und einen rowIndex.
Das Fenster generiert automatisch eine Oberfläche für das gegebene Tabellenmodell um Datensätze hinzuzufügen oder zu editieren.
Jetzt ist mein Tabellenmodell wie folgt erweitert:
Es steht eine Methode zur Verfügung die für bestimmte Spalten eine ArrayList von gültigen Werten zurückgibt (sonst null).
Zusätlich reagiere ich unterschiedlich, je nach dem ob ein Attribut mehrere Werte aufnehmen kann oder nur eines.
Für den Fall einer Einzelauswahl wird eine ComboBox generiert.
Jetzt kommen wir dem wichtigen Punkt, dass ein Feld beliebig viele Werte annehmen kann und nur bestimmte werte angenommen werden können.
Für diesen Fall hab ich ein weiteres Fenster entworfen. Dort sind zwei JList drauf zwischen denen die Werte übergeben werden.
Jetzt habe ich meinem Fenster zwei Variablen:
- ausgewählte Werte
- nicht ausgewählte Werte
Da dies aber für mehrere Werte sein kann, tauchen öfters die anonymen Funktion auf. Aber wie krieg ich die Variablen vernünftig hin?
Ich hab hier die wichtigen Codeausschnitte einmal zusammengestellt:
Danke schoneinmal für die Hilfe
Ich habe ein Fenster entwickelt, welches ein zwei Parameter hat: Ein Abstraktes Tabellenmodell und einen rowIndex.
Das Fenster generiert automatisch eine Oberfläche für das gegebene Tabellenmodell um Datensätze hinzuzufügen oder zu editieren.
Jetzt ist mein Tabellenmodell wie folgt erweitert:
Es steht eine Methode zur Verfügung die für bestimmte Spalten eine ArrayList von gültigen Werten zurückgibt (sonst null).
Zusätlich reagiere ich unterschiedlich, je nach dem ob ein Attribut mehrere Werte aufnehmen kann oder nur eines.
Für den Fall einer Einzelauswahl wird eine ComboBox generiert.
Jetzt kommen wir dem wichtigen Punkt, dass ein Feld beliebig viele Werte annehmen kann und nur bestimmte werte angenommen werden können.
Für diesen Fall hab ich ein weiteres Fenster entworfen. Dort sind zwei JList drauf zwischen denen die Werte übergeben werden.
Jetzt habe ich meinem Fenster zwei Variablen:
- ausgewählte Werte
- nicht ausgewählte Werte
Da dies aber für mehrere Werte sein kann, tauchen öfters die anonymen Funktion auf. Aber wie krieg ich die Variablen vernünftig hin?
Ich hab hier die wichtigen Codeausschnitte einmal zusammengestellt:
Java:
public DataModificationWindow(final AbstractMediaTableModel atm, int rowIndex)
{
double[] cols = {80,100,80,100};
double[] rows = new double[(int) Math.ceil((double)atm.getColumnCount() / 2)+1];
for(int i=0; i < rows.length; i++)
rows[i] = 25;
double size[][] = {cols,rows};
TableLayout tl = new TableLayout(size);
panel = new JPanel(tl);
boolean isOdd = (atm.getColumnCount() % 2) == 1;
final ArrayList<Object[]> col_sources = new ArrayList<Object[]>();
for(int i=0; i < atm.getColumnCount(); i++)
col_sources.add(atm.getColumnKeys(i));
final ArrayList<String> not_selected_vals = new ArrayList<String>();
final ArrayList<String> selected_vals = new ArrayList<String>();
for(int i=0; i < atm.getColumnCount(); i=i+2)
{
/*
* Der Ausdruck:
* (isOdd && (atm.getColumnCount()-i) == 1 ? 2:4)
* liefert im Falle des letzten Elementes eine 2 zurück, sonst 4
*/
for(int j=0 ; j < (isOdd && (atm.getColumnCount()-i) == 1 ? 2:4) ; j=j+2)
{
....
....
....
temp.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
new ListSelector(not_selected_vals, selected_vals);
}
});
panel.add(temp, datafield_pos);
}
else
{
System.out.println("Value is no ArrayList");
panel.add(new JComboBox(col_sources.get(i+(j/2))),datafield_pos);
}
}
}
}
....
....
....
}
Danke schoneinmal für die Hilfe