Метод showMessageDialog(Component, Object) в типе JOptionPane не применим для аргументов (новый ActionListener(){}, String)
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);
}
}
2 ответа
Решение
Так что проблема заключается в...
butn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(this, tf.getText());
}
});
this
в этом контексте относится к анонимному экземпляру ActionListener
, а не родительский класс.
Простым решением может быть использование JOptionPane.showMessageDialog(tf, tf.getText());
JOptionPane.showMessageDialog(this, tf.getText());
"this" относится к ActionListener.
Вы хотите, чтобы фрейм был родителем панели опций:
JOptionPane.showMessageDialog(fm, tf.getText());