![]() |
|
|||||||
| Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 17.01.2008
Fachbeiträge: 3.624
Abgegebene Danke: 43
Erhielt 203 Danke für 182 Beiträge
|
Hallo...
ich hab grad ne Methode geschrieben, und ich kuck sie mir an und denke "oh mein gott " Leider stell ich mich beim Arbeiten mit arrays usw immer sehr doof an, vllt geh ich auch das komplett falsch an. Hab ne JList, mit einem String[] model. Da man bei einem ListModel weder ein "add" noch "remove" hat, muss ich mir das komplette Model immer neu machen, wenn ich etwas lösche oder adde. Im Anhang meine grandiose Methode, die Elemente aus der Liste löscht. Wäre nett, wenn ihr mir da ne bessere Version vorschlagt, ich stell mich bei sowas wie gesagt immer recht doof an, ich machs immer unglaublich kompliziert, aber mir fehtl die Übung mit sowas. Bitteschön: Code:
/* Neue Liste = alte Liste - selektierte Einträge */
int[] selectedIndices = list.getSelectedIndices();
int oldSize = list.getModel().getSize();
int newSize = oldSize - selectedIndices.length;
String[] newListModel = new String[newSize];
int newIndex = 0;
/* Liste kopieren bis auf selektierte Einträge */
for (int i = 0; i < oldSize; i++) {
/* Soll dieser Eintrag kopiert werden ? */
boolean toCopy = true;
for (int j : selectedIndices) {
if (i == j) {
// nicht kopieren, Element überspringen
toCopy = false;
break;
}
}
if (toCopy) {
// kopieren, es ist keines der selektierten Elemente:
newListModel[newIndex] = (String) list.getModel()
.getElementAt(i);
newIndex++;
}
}
/* Liste durch neue ersetzen und wieder an das ScrollPane hängen */
list = new JList(newListModel);
listPane.setViewportView(list);
__________________
Java Lernen leicht gemacht: www.javavideokurs.de Java Video Kurs - Java Video Tutorials - Online Java lernen! |
|
|
| #3 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Themenstarter
Registriert seit: 17.01.2008
Fachbeiträge: 3.624
Abgegebene Danke: 43
Erhielt 203 Danke für 182 Beiträge
|
lol, beginnt jetz das Thread-übergreifende Stalking
Ich hab auch nie gesagt, dass ich Bauklötze nich mag, sondern nur, dass es nun mal Fakt ist. Aber...hey... bitte, lassen Sie mich in Frieden, um Gottes Willen ![]() edit: also ich bin etwas überfordert mit util. Was brauch ich hier? Ich hab n ListModel, dazu gibts nix in util, das einzige was ich noch habe is ja ein Array. Aber irgendwie kann ich da keine Methode von brauchen. Ich wollt's auch mit System.arraycopy machen, aber ich kann das ListModel nicht in ein Array casten. Sorry, dieser Tipp hilft mir grad irgendwie nicht weiter Ich brauch auch nich wirklich Methoden, die ne bessere Performance haben, auch wenn der Titel das sagt. Wär natürlich auch gut, aber vorallem sieht der code doch einfach total sch*** aus.Diese Sache mit dem boolean dazwischen und so, ich weiss ja nicht.. Geht das nich kürzer?
__________________
Java Lernen leicht gemacht: www.javavideokurs.de Java Video Kurs - Java Video Tutorials - Online Java lernen! |
|
|
| #4 (permalink) | |
|
Nicht angemeldet
Fachbeiträge: n/a
|
ich dachte jetzt so in der art:
Code:
List<Integer> selectedIndices = Arrays.asList(list.getSelectedIndices()); List<String> newListModel = new ArrayList<String>(); ListModel lmod = list.getModel(); for(int i = 0; oldSize.getSize(); ++i) if(!selectedIndices.contains(i)) newListModel.add((String)lmod.getElementAt(i)); list = new JList(newListModel.toArray(new String[newListModel.size()])); aber bau dir mal nen vernüftiges model - da die JList neu anzulegen verbraucht einiges mehr an ressourcen |
| #5 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Themenstarter
Registriert seit: 17.01.2008
Fachbeiträge: 3.624
Abgegebene Danke: 43
Erhielt 203 Danke für 182 Beiträge
|
Code:
List<Integer> selectedIndices = Arrays.asList(list.getSelectedIndices()); die for-schleife irgendwie anzupassen, krieg's aber so nich hin. edit: Was meinst du mit "vernünftiges" Model? Wie sieht ein vernünftiges Model aus?
__________________
Java Lernen leicht gemacht: www.javavideokurs.de Java Video Kurs - Java Video Tutorials - Online Java lernen! |
|
|
| #6 (permalink) | ||||||||||||||||||||||||||||||||||||||||||||||
|
Nicht angemeldet
Fachbeiträge: n/a
|
Code:
int[] selectedIndices = list.getSelectedIndices();
// Arrays.sort(selectedIndices); [edit] kann raus
List<String> newListModel = new ArrayList<String>();
ListModel lmod = list.getModel();
int s = 0;
for(int i = 0; lmod.getSize(); ++i)
if(s < selectedIndices.length && i == selectedIndices[s])
++s;
else
newListModel.add((String)lmod.getElementAt(i));
list = new JList(newListModel.toArray(new String[newListModel.size()]));
|
|||||||||||||||||||||||||||||||||||||||||||||
| #7 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.993
Abgegebene Danke: 0
Erhielt 1.669 Danke für 1.512 Beiträge
|
Ähm - warum eigentlich das gewurste mit einem eigenen ListModel und vor allem dem erstellen einer neuen JList
? Was spricht gegen ein DefaultMutableListModel? Da hat man alles, was man braucht, und braucht auch keine neue JList zu erstellen (was IMHO ziemlich murksig ist....)
|
|
|
| #8 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Themenstarter
Registriert seit: 17.01.2008
Fachbeiträge: 3.624
Abgegebene Danke: 43
Erhielt 203 Danke für 182 Beiträge
|
Du meinst DefaultListModel oder? Mutable gibts nicht, aber es ist veränderbar. Hab das jetz auch genutzt, und schwuppst sieht meine ganze Methode nun so aus:
Code:
DefaultListModel listModel = (DefaultListModel) list.getModel();
int i = 0;
while ((i = list.getSelectedIndex()) != -1) {
listModel.remove(i);
}
Das is doch mal was Danke
__________________
Java Lernen leicht gemacht: www.javavideokurs.de Java Video Kurs - Java Video Tutorials - Online Java lernen! |
|
|
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| ListModel dynamisch und schnell aber sicher ändern | JuVman5KL | Java Basics - Anfänger-Themen | 7 | 19.01.2009 20:59 |
| Synchronisation zwischen JList und ListModel | hdi | Java Basics - Anfänger-Themen | 6 | 02.11.2008 06:37 |
| JAX Innovation Award 2007 verliehen | DP | News | 0 | 12.05.2007 14:35 |
| Preise für JAVA STARS – SUN MICROSYSTEMS AWARD 2006 | DP | News | 0 | 12.05.2007 14:21 |
| ListSelectionModel und ListModel | Martina | AWT, Swing, JavaFX & SWT | 6 | 09.11.2005 12:02 |
| Lesezeichen |
|
|