Java 为什么我会得到一个“;找不到适用于“匿名”的方法;错误?

Java 为什么我会得到一个“;找不到适用于“匿名”的方法;错误?,java,anonymous-types,inner-classes,anonymous,Java,Anonymous Types,Inner Classes,Anonymous,标记行中的错误表示“找不到适合匿名(,java.lang.String)的方法”” 为什么在我直接编写了javax.swing.\u CLASS\u?时会出现这种情况?问题是这一行中的指的是您创建的匿名Runnable实例,而不是围绕它的类。你需要更明确地说明你在这里的意思 如果封闭类名为Foo,并且是swing组件,则应编写: Runnable r = new Runnable() { @Override public void run() { if(varx)

标记行中的错误表示
“找不到适合匿名(,java.lang.String)的方法”


为什么在我直接编写了
javax.swing.\u CLASS\u

时会出现这种情况?问题是
这一行中的
指的是您创建的匿名
Runnable
实例,而不是围绕它的类。你需要更明确地说明你在这里的意思

如果封闭类名为
Foo
,并且是swing
组件
,则应编写:

Runnable r = new Runnable() {
    @Override
    public void run() {
        if(varx) {
            new displayFullScreen().setVisible(true);
        } else {
            javax.swing.JOptionPane.showMessageDialog(this, "dfv"); // this statement gives an error
        }
    }
};
new Thread(r,"full_screen_display").start();

有关更多信息,请参阅文档。

问题在于,该行中的
指的是您创建的匿名
可运行的
实例,而不是围绕它的类。你需要更明确地说明你在这里的意思

如果封闭类名为
Foo
,并且是swing
组件
,则应编写:

Runnable r = new Runnable() {
    @Override
    public void run() {
        if(varx) {
            new displayFullScreen().setVisible(true);
        } else {
            javax.swing.JOptionPane.showMessageDialog(this, "dfv"); // this statement gives an error
        }
    }
};
new Thread(r,"full_screen_display").start();

有关详细信息,请参阅文档。

原因是
javax.swing.JOptionPane.showMessageDialog
需要一个
组件作为第一个参数,但您要传入
这个
,它是一个
可运行的
(匿名)

parentComponent-确定对话框所在的框架 显示;如果为null,或者parentComponent没有帧,则默认为 使用框架

javax.swing.JOptionPane.showMessageDialog(这个“dfv”)将不起作用,因为
是一个
可运行的
,它不继承自
组件
。 改用这个:

javax.swing.JOptionPane.showMessageDialog(Foo.this, "dfv"); 

JOptionPane.showMessageDialog
显示:

parentComponent-确定对话框所在的框架 显示;如果为null,或者parentComponent没有帧,则默认为 使用框架

javax.swing.JOptionPane.showMessageDialog(这个“dfv”)将不起作用,因为
是一个
可运行的
,它不继承自
组件
。 改用这个:

javax.swing.JOptionPane.showMessageDialog(Foo.this, "dfv");