Ich versuche, das Verhalten von JToolBar zu ändern, damit es an mehr als ein JPanel andocken kann. Als Teil dieser Übung muss ich die Methode getDockingConstraint
überschreiben, die ich mit einer anonymen Klasse unter Verwendung einer dem Original sehr ähnlichen Definition versucht habe.Zugriff auf "diese" von einer anonymen Java-Unterklasse
Das Problem ist, dass die ursprüngliche Implementierung mehrmals referenziert this
, die ich dachte, wäre in Ordnung, aber ich muss etwas fehlen, weil die IDE meldet, dass this.dockingSensitivity
für die anonyme Klasse nicht sichtbar ist.
Gibt es hier eine einfache Änderung, oder sollte ich diesen Ansatz überspringen und nur eine vollständige Unterklasse von BasicToolBarUI
erstellen? Oder gibt es vielleicht einen besseren Ansatz, um die Docking-Funktion von JToolBar zu modifizieren?
public MultiDockToolBar() {
setUI(new BasicToolBarUI(){
@Override
private String getDockingConstraint(Component var1, Point var2) {
if(var2 == null) {
return this.constraintBeforeFloating;
} else {
if(var1.contains(var2)) {
// Breaks here when using this.:
this.dockingSensitivity = this.toolBar.getOrientation() == 0?this.toolBar.getSize().height:this.toolBar.getSize().width;
if(var2.y < this.dockingSensitivity && !this.isBlocked(var1, "North")) {
return "North";
}
// Check East
// Check West
// Check South
}
return null;
}
}
});
}
Ich glaube nicht, dass diese Frage ein Duplikat der verknüpften Frage ist. Während sie ähnlich sind, versuchen sie auf "dieses" für eine äußere Klasse von einer inneren Klasse zuzugreifen. Ich versuche, eine andere Klasse zu unterklassifizieren, die "this" verwendet, um auf ein privates Feld in der Superklasse zuzugreifen. Ich definiere die Unterklasse zufällig als eine anonyme innere Klasse, aber der Schlüssel ist, dass die innere Klasse die Klasse erweitert, die das private Feld hatte. –