62,626
社区成员
发帖
与我相关
我的任务
分享 super(frame,"标题",true)的时候,发现如果在父类的构造方法中对按钮添加事件监听。btn.addActionListener(new AbstractAction() {//给按钮添加事件监听
@Override
public void actionPerformed(ActionEvent e) {
Demo1 demo1=new Demo1();//创建父对象
new JDialog2(demo1);
}
});[code=java] static class Test{
public static void main(String[] args){
// new Demo1();
Demo1 demo1=new Demo1();
demo1.btn.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
new JDialog2(demo1);
}
});
}
}new JDialog2(demo1);这里的父窗口对象不new它,不让他再次弹窗。可不可以不用new来创建对象?
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class Demo1 extends JFrame {
private Demo1 demo1;
JButton btn;
// Demo1 demo1=new Demo1();//
public Demo1(){
setBounds(100,100,100,100);//设置窗体属性
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c=getContentPane();//获取容器
c.setLayout(new BorderLayout());//容器布局
btn= new JButton("按一下弹出对话框");
// btn.addActionListener(new AbstractAction() {//给按钮添加事件监听
// @Override
// public void actionPerformed(ActionEvent e) {
// Demo1 demo1=new Demo1();
// new JDialog2(demo1);
// }
// });
c.add(btn);//添加按钮
setVisible(true);
}
static class Test{
Demo1 demo1;
public static void main(String[] args){
// new Demo1();
Demo1 demo1=new Demo1();
demo1.btn.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
new JDialog2(demo1);
}
});
}
}
}
class JDialog2 extends JDialog {//对话框类
public JDialog2(Frame frame) {//调用时传入父窗体对象
super(frame, "对话框", true);//我希望对话框弹出后阻塞父窗体
setSize(200, 140);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Container container = getContentPane();
container.add((new JLabel("这是一个对话框")), BorderLayout.CENTER);
setVisible(true);
}
}

