java - 从匿名 Java 子类访问 "this"

标签 java swing anonymous-methods jtoolbar

我正在尝试修改 JToolBar 的行为,以允许它停靠到多个 JPanel。作为本练习的一部分,我需要重写方法 getDockingConstraint我尝试使用与原始类非常相似的定义来处理匿名类。

问题在于原始实现引用 this好几次,我认为应该没问题,但我一定错过了一些东西,因为 IDE 报告 this.dockingSensitivity对匿名类不可见。

这里有一个简单的更改吗,或者我应该跳过这种方法并只创建 BasicToolBarUI 的完整子类?或者也许有更好的方法来完全修改 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;
                }
            }
        });
    }

最佳答案

dockingSensitivityBasicToolBarUI 类中的私有(private)字段。您将无法直接更改此设置。如果您仍然想编辑并面临潜在的后果,您可以使用 Java Reflections 库。

关于java - 从匿名 Java 子类访问 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36096773/

相关文章:

java - 解决错误 'can not resolve symbol'

JavaFX primaryStage.close() 来自方法

java - 获取单个 ScrollableResults 行

java - 从 2 个不同的客户端调用同一个 Servlet

java - 有没有办法在 JOptionPane showInputDialog 中只有 OK 按钮(没有 CANCEL 按钮)?

c# - 匿名函数体变量保存在哪里?

java - 使用 Web-API 和 Java 接受 Steam 的交易报价

java - 您在 Izpack 安装的RegistrySpec.xml 中添加了什么来设置 Publisher 字段

java - 如果选择了 jtable 中相应复选框的复选框,如何获取另一个单元格的值?

c# - 匿名方法的丑陋之处和优点-C#