你的代码有问题,
一 没有导入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显示
}
}
JButton是swing包里的控件,该控件没有ActionListener相关API。而java.awt.Button中存在ActionListener。
故:修改JButton为Button即可,再添加以下import语句:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
请别被误导。请看API文档的说明
javax.swing.JButton
Methods inherited from class javax.swing.AbstractButton
actionPropertyChanged, addActionListener,
怎么会没有呢。
只是你没有引入相关的类而已
import java.awt.event.*;
即可以