java - JOptionPane 类型中的方法 showMessageDialog(Component, Object) 不适用于参数 (new ActionListener(){}, String)

标签 java swing awt joptionpane showmodaldialog

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class GUIClass extends JFrame {


    public static void main (String[] args){
        // TODO Auto-generated method stub
        JFrame fm = new JFrame();
        final JTextField tf = new JTextField();
        JButton butn = new JButton("Click ME");      
        tf.setBounds(50, 20, 130, 40);
        butn.setBounds(50, 80, 120, 30);
        butn.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            JOptionPane.showMessageDialog(this, tf.getText());
        }
        });
        fm.add(tf);
        fm.add(butn);
        fm.setLayout(null);
        fm.setVisible(true);
        fm.setSize(400, 300);

    }

}

最佳答案

所以问题出在......

butn.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        JOptionPane.showMessageDialog(this, tf.getText());
    }
});

this在此上下文中指的是ActionListener的匿名实例,而不是父类。

一个简单的解决方案可能是使用 JOptionPane.showMessageDialog(tf, tf.getText());

关于java - JOptionPane 类型中的方法 showMessageDialog(Component, Object) 不适用于参数 (new ActionListener(){}, String),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43107861/

相关文章:

java - JOptionPane 通过构造函数不显示/提示

Java - Timer.cancel() 与 TimerTask.cancel()

java - 从 MVC 架构中的对话框获取输入

java - repaint() 未在 Java 程序中调用

java - JDialog 不可见

java - 为什么android需要jvm

java - 默认情况下,Project->Build Project in Eclipse with m2e 是否包含任何 Maven 目标?

java - "window inside window"与 Swing 和 Netbeans

java - 如何每 x 秒重绘一个 jpanel?

java - 为什么 java.awt.Color 返回 RGB 值?