如何吧jframe作为jdialog的父类

2025-04-04 15:02:30
推荐回答(1个)
回答1:

  • JFrame窗口,JDialog对话框, 两者都是顶层容器 , 但是java是单继承的 ,JDialog的父类是Dialog, 所以不能把JFrame作为JDialog的父类

  • 通常,我们是把JFrame作为JDialog的父窗口. 比如点击JFrame上的按钮,弹出某个JDialog的对话框等.

  • 效果图

  • 参考代码

import javax.swing.*;
import java.awt.event.*;

public class DialogFrame extends JFrame implements ActionListener {
JPanel jp1;
JTextField jtf;
JButton jb1;

public DialogFrame() {
jp1 = new JPanel();
JLabel jl1 = new JLabel("请输入用户名");
jtf = new JTextField(8);
jb1 = new JButton("确定");
jb1.addActionListener(this);
jp1.add(jl1);
jp1.add(jtf);
jp1.add(jb1);

add(jp1);
// 窗口属性设置
setTitle("JFrame");// 标题
setSize(380, 180);// 窗口大小
setLocationRelativeTo(null);// 窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗口点击关闭时,退出程序
}

public static void main(String[] args) {
new DialogFrame().setVisible(true);
}

@Override
public void actionPerformed(ActionEvent e) {
if (jb1 == e.getSource()) {
String name = jtf.getText().trim();
if (name.equals("")) {// 验证是否输入了有效的字符串
// 字符串为"", 那么弹出对话框进行提示
JDialog jd = new JDialog(this, "JDialog 提示", true);
// 第一个参数 this 代表了本JFrame对象
// 第二个参数 标题
// 第三个参数 true表示模态窗口, 该窗口置顶,并且如果不关闭,无法点击其他的组件
JLabel jl = new JLabel("Sorry! 用户名必须填写,不能为空!");
jd.add(jl);
jd.setSize(230, 100);
jd.setLocationRelativeTo(null);
jd.setVisible(true);
jd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
return;
}

}
}

}