LPrincesay 2019-11-18 22:22 采纳率: 0%
浏览 308

构造器传参错误?this.this$0=this$0?

求助求助!!

编译显示:无法将 java.awt.event.WindowAdapter中的构造器WindowAdapter应用到给定类型;实际参数列表与形式参数列表长度不同;
this.this$0=this$0;是什么意思?这个编译显示:找不到符号;

private void jbInit() throws Exception {
        this.setLayout((LayoutManager)null);
        this.view.setBackground(Color.white);
        this.view.setBounds(new Rectangle(6, 26, 537, 316));
        this.setBackground(Color.gray);
        this.addWindowListener( new WindowAdapter((CurveShow)this) {

            {
                this.this$0 =this$0;
            }

            public void windowOpened(WindowEvent e) {
                this.this$0.this_windowOpened(e);
            }

            public void windowClosing(WindowEvent e) {
                this.this$0.this_windowClosing(e);
            }
        });
        this.choicelen.setBounds(new Rectangle(69, 355, 94, 21));
        this.choicelen.addItemListener(new ItemListener() {
            {
                this.this$0 = this$0;
            }

            public void itemStateChanged(ItemEvent e) {
                this.this$0.choicelen_itemStateChanged(e);
            }
        });

求助

  • 写回答

1条回答 默认 最新

  • 落鱼. 2022年度博客新星评选TOP 6 2024-03-04 00:17
    关注

    首先,您不需要在匿名内部类的初始化块中设置this.this$0 = this$0;,因为this$0已经是对外部类的引用。您应该直接使用this$0来调用外部类的方法。

    以下是修改后的代码示例:

    
    private void jbInit() throws Exception {
        this.setLayout((LayoutManager)null);
        this.view.setBackground(Color.white);
        this.view.setBounds(new Rectangle(6, 26, 537, 316));
        this.setBackground(Color.gray);
        
        // 添加窗口监听器
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowOpened(WindowEvent e) {
                // 直接使用this$0调用外部类的方法
                this$0.this_windowOpened(e);
            }
            
            @Override
            public void windowClosing(WindowEvent e) {
                // 同上
                this$0.this_windowClosing(e);
            }
        });
    
        // 添加项目监听器
        this.choicelen.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                // 同上
                this$0.choicelen_itemStateChanged(e);
            }
        });
    }
    请注意,我已经移除了this.this$0 = this$0;这一行,并且确保在匿名内部类的覆盖方法中直接使用this$0来调用外部类的方法。这样,编译器就能正确地找到外部类的符号,并且不会再报错。
    
    如果您的外部类(在这个例子中是CurveShow)有this_windowOpened、this_windowClosing和choicelen_itemStateChanged这些方法,那么上面的代码应该可以正常编译和运行。如果这些方法不存在,您需要在外部类中定义它们。首先,您不需要在匿名内部类的初始化块中设置this.this$0 = this$0;,因为this$0已经是对外部类的引用。您应该直接使用this$0来调用外部类的方法。
    
    以下是修改后的代码示例:
    
    private void jbInit() throws Exception {
        this.setLayout((LayoutManager)null);
        this.view.setBackground(Color.white);
        this.view.setBounds(new Rectangle(6, 26, 537, 316));
        this.setBackground(Color.gray);
        
        // 添加窗口监听器
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowOpened(WindowEvent e) {
                // 直接使用this$0调用外部类的方法
                this$0.this_windowOpened(e);
            }
            
            @Override
            public void windowClosing(WindowEvent e) {
                // 同上
                this$0.this_windowClosing(e);
            }
        });
    
        // 添加项目监听器
        this.choicelen.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                // 同上
                this$0.choicelen_itemStateChanged(e);
            }
        });
    }
    
    

    请注意,我已经移除了this.this$0 = this$0;这一行,并且确保在匿名内部类的覆盖方法中直接使用this$0来调用外部类的方法。这样,编译器就能正确地找到外部类的符号,并且不会再报错。

    如果您的外部类(在这个例子中是CurveShow)有this_windowOpened、this_windowClosing和choicelen_itemStateChanged这些方法,那么上面的代码应该可以正常编译和运行。如果这些方法不存在,您需要在外部类中定义它们。

    评论

报告相同问题?

悬赏问题

  • ¥15 mmdetection3d如何计算单目3D目标检测方法的flops
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
  • ¥15 SQL Server analysis services 服务安装失败
  • ¥15 基于面向对象的图书馆借阅管理系统
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥20 centos linux 7.9安装php8.2.18不支持mysqli模块的问题