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();
标记行中的错误显示"No suitable method found for anonymous (<java.lang.Runnable>,java.lang.String)
“
为什么我直接写javax.swing._CLASS_
时呢?
答案 0 :(得分:4)
问题是该行中的this
是指您创建的匿名Runnable
实例,而不是围绕它的类。你需要更清楚地了解你在那里this
的意思。
如果封闭的类名为Foo
,并且是一个摆动Component
,您应该写:
javax.swing.JOptionPane.showMessageDialog(Foo.this, "dfv");
有关详细信息,请参阅Nested Classes文档。
答案 1 :(得分:0)
原因是javax.swing.JOptionPane.showMessageDialog
期望Component
作为第一个参数,但您传入this
,这是一个Runnable
(匿名)。
答案 2 :(得分:0)
JOptionPane.showMessageDialog
documentation说:
parentComponent - 确定对话框所在的Frame 显示;如果为null,或者如果parentComponent没有Frame,则为默认值 使用框架
javax.swing.JOptionPane.showMessageDialog(this, "dfv");
无效,因为this
是Runnable
,不会从Component
继承。
请改用:
javax.swing.JOptionPane.showMessageDialog(null, "dfv");