Hallo,
ich habe ein zwei Dimensionales Array mit Informationen darin. Zur Anzeige dieser Informationen benutze ich ein JPanels.
Ich habe mir eine FocusTraversalPolicy erstellt in der ich durch die Gegend navigiere. Teilweise benutze ich noch ein paar Konstante, ist ja alles nur testweise also nicht wundern...
Das navigieren mit den Pfeiltasten nach Links und Rechts funktioniert schon, es fehlt nur noch das nach oben und unten.
Geht das überhaupt...? Habe langsam das Gefühl das die FocusTraversalPolicy der falsche Ansatz war...
Mein bisheriger Code:
Ich habe zugegeben auch nicht ganz verstanden, woher jetzt die TraversalPolicy weiß wann die Methode getAfter und getBefore aufgerufen werden. Am Anfang lege ich ja einige Tasten fest und speichere sie im HashSet, irgendwie muss das ja damit zusammenhängen.
Viele Dank für Hilfe
ich habe ein zwei Dimensionales Array mit Informationen darin. Zur Anzeige dieser Informationen benutze ich ein JPanels.
Ich habe mir eine FocusTraversalPolicy erstellt in der ich durch die Gegend navigiere. Teilweise benutze ich noch ein paar Konstante, ist ja alles nur testweise also nicht wundern...
Das navigieren mit den Pfeiltasten nach Links und Rechts funktioniert schon, es fehlt nur noch das nach oben und unten.
Geht das überhaupt...? Habe langsam das Gefühl das die FocusTraversalPolicy der falsche Ansatz war...
Mein bisheriger Code:
Java:
public MyTraversalPolicy(final ViewDialogHandler viewDialogHandler) {
_dialogHandler = viewDialogHandler;
Set<KeyStroke> newForwardKeys = new HashSet<KeyStroke>();
newForwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0));
KeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalKeys(
KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, newForwardKeys);
Set<KeyStroke> newBackwardKeys = new HashSet<KeyStroke>();
newBackwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0));
KeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalKeys(
KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, newBackwardKeys);
}
private int getCurrentRow() {
return _currentRow;
}
private int getCurrentTier() {
return _currentTier;
}
// Fuer euch ist diese Methode unwichtig, wird aber der Vollständigkeit halber mit gezeigt...
private void setCoordinate(final int row, final int tier) {
_currentRow = row;
_currentTier = tier;
getView().getOccupationView().setNewBorder(row, tier);
}
// Fuer euch ist diese Methode unwichtig, wird aber der Vollständigkeit halber mit gezeigt...
private View getView() {
return (View) _dialogHandler.getView();
}
// ------------ After ------------
@Override
public Component getComponentAfter(final Container aContainer, final Component aComponent) {
int aRow = getCurrentRow();
int aTier = getCurrentTier();
/** row wrap **/
if (aRow + 1 > maxRow) {
setCoordinate(0, aTier - 1);
return getView().getOccupationView().getPanel()[0][aTier - 1];
}
/** for one Tier **/
if (aComponent == _panel[aRow][aTier]) {
setCoordinate(aRow + 1, aTier);
return getView().getOccupationView().getPanel()[aRow + 1][aTier];
}
return _panel[0][0];
}
// ------------ Before --------------
@Override
public Component getComponentBefore(final Container aContainer, final Component aComponent) {
int aRow = getCurrentRow();
int aTier = getCurrentTier();
/** row wrap **/
if (aRow == 0) {
setCoordinate(maxRow, aTier + 1);
return getView().getOccupationView().getPanel()[maxRow][aTier + 1];
}
/** for one Tier **/
if (aComponent == _panel[aRow][aTier]) {
setCoordinate(aRow - 1, aTier);
return getView().getOccupationView().getPanel()[aRow - 1][aTier];
}
return _panel[0][0];
}
@Override
public Component getFirstComponent(final Container aContainer) {
return _panel[0][maxTier];
}
@Override
public Component getLastComponent(final Container aContainer) {
return _panel[maxRow][maxTier];
}
@Override
public Component getDefaultComponent(final Container aContainer) {
_panel = geView().getOccupationView().getPanel();
setCoordinate(0, maxTier);
JOptionPane.showMessageDialog(null, _panel.length + "/" + _panel[0].length);
return _panel[0][maxTier];
}
Ich habe zugegeben auch nicht ganz verstanden, woher jetzt die TraversalPolicy weiß wann die Methode getAfter und getBefore aufgerufen werden. Am Anfang lege ich ja einige Tasten fest und speichere sie im HashSet, irgendwie muss das ja damit zusammenhängen.
Viele Dank für Hilfe
Zuletzt bearbeitet: