JAVA中 addActionListener部分 不知道为什么我这段代码一直显示这句 拜托大家给我看看

2025-03-18 20:26:22
推荐回答(3个)
回答1:

你的代码有问题,

一 没有导入java.awt.event包

二 用了空布局却没有设定JLabel jl的大小

三 没有设置JFrame的大小和显示

你的程序我帮你改完了(改动的地方见注释)

完整的程序如下:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;//这里导入java.awt.event包
class MyJDialog extends JDialog{
    public MyJDialog(MyFrame frame){
        super(frame, "xxx", true);
        Container container = getContentPane();
        container.add(new JLabel("label"));
        setBounds(120,120,100,100);
    }
}
public class MyFrame extends JFrame{
    public static void main(String[] args){
      new MyFrame();
        
    }
    public MyFrame(){
        Container container = getContentPane();
        container.setLayout(null);
        JLabel jl = new JLabel("xxxxxxxxxxxxxxxxx");
        jl.setHorizontalAlignment(SwingConstants.CENTER);
        jl.setBounds(10, 0,120,21);//这里加一句设置JLabel大小
        container.add(jl);
        JButton bl = new JButton("duihuakuang");
        bl.setBounds(10, 20,100,21);//这里把bl.setBounds(10, 10,100,21);改成bl.setBounds(10, 20,100,21);
     
        bl.addActionListener(new ActionListener(){     //显示这一行和下一行错误
        public void actionPerformed(ActionEvent e){
        new MyJDialog(MyFrame.this).setVisible(true);}
        }
        );
      
    container.add(bl);
    
    setSize(300, 300);//这里加一句设置JFrame大小
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//这里加一句设置JFrame关闭
    setVisible(true);//这里加一句设置JFrame显示
    }
}

回答2:

JButton是swing包里的控件,该控件没有ActionListener相关API。而java.awt.Button中存在ActionListener。


故:修改JButton为Button即可,再添加以下import语句:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

回答3:

请别被误导。请看API文档的说明

  javax.swing.JButton
  Methods inherited from class javax.swing.AbstractButton
  actionPropertyChanged, addActionListener,

怎么会没有呢。


只是你没有引入相关的类而已


import java.awt.event.*;

即可以