package event;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Action
{
public class ButtonActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JButton button=(JButton)e.getSource();
String buttonName=e.getActionCommand();
if(buttonName.equals("登陆"))
{
button.setText("退出登陆");
JOptionPane.showMessageDialog(null,"您已成功登陆!","消息",JOptionPane.INFORMATION_MESSAGE);
}
else
{
button.setText("登录");
JOptionPane.showConfirmDialog(null, "您确定要退出吗?", "消息",JOptionPane.YES_NO_OPTION);
}
}
}
public static void createAndShowGUI()
{
JFrame frame=new JFrame();
frame.setTitle("动作事件");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200,160);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
JPanel panel=new JPanel();
frame.add(panel,BorderLayout.SOUTH);
JButton OKButton=new JButton("登陆");
//OKButton.addActionListener(new ButtonActionListener());
OKButton.addActionListener(OKButton.new ButtonActionListener());
panel.add(OKButton);
}
public static void main(String[] args)
{
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
}
}
开始用这句:OKButton.addActionListener(new ButtonActionListener());
报错:没有任何类型 Action 的外层实例可访问。必须用类型 Action 的外层实例(例如,x.new A(),其中 x 是 Action 的实例)来限定分配。
改成这句:OKButton.addActionListener(OKButton.new ButtonActionListener());
报错:JButton.ButtonActionListener 无法解析为类型
JAVA按钮触发动作事件,请帮忙分析一下错误原因,谢谢。
答案:1 悬赏:80 手机版
解决时间 2021-03-22 01:34
- 提问者网友:喧嚣尘世
- 2021-03-21 05:43
最佳答案
- 五星知识达人网友:不如潦草
- 2021-03-21 06:42
public class Action
{
public class ButtonActionListener implements ActionListener ????
两个public 关键字啊,这样写太不规范了,
直接新建一个类 把ButtonActionListener 提取出来就好了
{
public class ButtonActionListener implements ActionListener ????
两个public 关键字啊,这样写太不规范了,
直接新建一个类 把ButtonActionListener 提取出来就好了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯