J'essaie de modifier le comportement de JToolBar pour lui permettre de se connecter à plus d'un JPanel. Dans le cadre de cet exercice, j'ai besoin de remplacer la méthode getDockingConstraint
que j'ai essayé de faire avec une classe anonyme en utilisant une définition très similaire à l'original. Le problème est que l'implémentation d'origine référence this
plusieurs fois que je pensais que cela irait bien, mais il me manque quelque chose car l'EDI signale que this.dockingSensitivity
n'est pas visible par la classe anonyme.Accéder à "this" à partir d'une sous-classe Java anonyme
Y at-il un changement simple ici, ou devrais-je sauter cette approche et juste créer une sous-classe complète de BasicToolBarUI
? Ou peut-être qu'il y a une meilleure approche entièrement à la modification de la capacité d'accueil de JToolBar?
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;
}
}
});
}
Je ne pense pas que cette question soit un doublon de la question liée. Bien que similaires, ils essaient d'accéder à «ceci» pour une classe externe à partir d'une classe interne. J'essaie de sous-classer une autre classe qui utilisait "this" pour accéder à un champ privé sur la super classe. Il se trouve que je définis la sous-classe comme une classe interne anonyme, mais la clé est que la classe interne étend la classe qui a le champ privé. –