J
jhjp
Gast
Hallo Leute,
ich bin am Ende... seit einer Woche mach ich an dem Problem bereits rum und komm auf keinen grünen Zweig.
Also ich hab ein Programm, das enthält ein JPanel in dem viele einzelnen JPanels (Entries) untereinander gelistet werden.
Von der Größe her passen 9 Entries in das große Panel.
Mit den Pfeiltasten hoch und runter kann man die Entries auswählen. Man kann maximal 1 Entry auswählen. Zu Beginn ist keins ausgewählt. Solange es weniger 10 Entries sind funktioniert das auswählen wunderbar.
Wenn jetzt aber mehr als 9 Entries in das Panel sollen muss ich scrollen.
Das heißt, wenn der currentIndex (-> gibt an, welchen Index der gewählte Entry hat) > lastVisibleIndex muss das JPanel so gefüllt werden:
Wenn der currentIndex < firstVisibleIndex:
Sonst (currentIndex im Bereich zwischen first und lastVisibleIndex):
oder?
ich bekomm da beim testen sehr häufig ne indexoutofboundsexception
Habs dann komplett neu versucht:
entryList enthält EntryPanel Objekte und zwar ALLE. (bis zu 100stk)
funktioniet aber au net.
Kann das wirklich so schwer sein oder bin ich einfach zu blöd?
Hoffe, dass mir jemand helfen kann...
Gruß Beni
ich bin am Ende... seit einer Woche mach ich an dem Problem bereits rum und komm auf keinen grünen Zweig.
Also ich hab ein Programm, das enthält ein JPanel in dem viele einzelnen JPanels (Entries) untereinander gelistet werden.
Von der Größe her passen 9 Entries in das große Panel.
Mit den Pfeiltasten hoch und runter kann man die Entries auswählen. Man kann maximal 1 Entry auswählen. Zu Beginn ist keins ausgewählt. Solange es weniger 10 Entries sind funktioniert das auswählen wunderbar.
Wenn jetzt aber mehr als 9 Entries in das Panel sollen muss ich scrollen.
Das heißt, wenn der currentIndex (-> gibt an, welchen Index der gewählte Entry hat) > lastVisibleIndex muss das JPanel so gefüllt werden:
Code:
for(int i=currentIndex-8; i<=currentIndex)
Wenn der currentIndex < firstVisibleIndex:
Code:
for(int i=currentIndex; i<=currentIndex+8)
Sonst (currentIndex im Bereich zwischen first und lastVisibleIndex):
Code:
for(int i=firstVisibleIndex; i<=lastVisibleIndex)
oder?
ich bekomm da beim testen sehr häufig ne indexoutofboundsexception
Habs dann komplett neu versucht:
entryList enthält EntryPanel Objekte und zwar ALLE. (bis zu 100stk)
Code:
if(entryList.size() > 9){
if(currentIndex < 9 && letztesSichtbaresElement_ListEntry == 8){
clearEntries();
int y = 49;
for(EntryPanel ep : entryList){
if(entryList.indexOf(ep) > 9)
return;
ep.setBounds(0, y, 518, entryHeight);
y += entryHeight;
add(ep);
}
}
if(currentIndex == letztesSichtbaresElement_ListEntry+1){
clearEntries();
int y = 49;
for(int i=(0+currentIndex-8); i<(9+currentIndex-8); i++){
entryList.get(i).setBounds(0, y, 518, entryHeight);
y += entryHeight;
add(entryList.get(i));
}
letztesSichtbaresElement_ListEntry = currentIndex;
}
if(currentIndex == letztesSichtbaresElement_ListEntry-9){
clearEntries();
int y = 49;
for(int i=(letztesSichtbaresElement_ListEntry-9); i<letztesSichtbaresElement_ListEntry; i++){
entryList.get(i).setBounds(0, y, 518, entryHeight);
y += entryHeight;
add(entryList.get(i));
}
letztesSichtbaresElement_ListEntry--;
}
}else{
scrollBar.setVisible(false);
clearEntries();
int y = 49;
for(EntryPanel ep : entryList){ //es können auch weniger als 9 objekte drin sein
if(entryList.indexOf(ep) > 9)
return;
ep.setBounds(0, y, 518, entryHeight);
y += entryHeight;
add(ep);
}
}
funktioniet aber au net.
Kann das wirklich so schwer sein oder bin ich einfach zu blöd?
Hoffe, dass mir jemand helfen kann...
Gruß Beni