java.swing中的JDialog类的问题
JDialog类中的setModal(Booleanb)该如何使用?(或者说该如何把用JDialog类创建的对话框设为模态?)JDialog的构造方法JDialog(Fr...
JDialog类中的setModal(Boolean b)该如何使用?(或者说该如何把用JDialog类创建的对话框设为模态?)
JDialog的构造方法JDialog(Frame owner,String title)该如何使用? 展开
JDialog的构造方法JDialog(Frame owner,String title)该如何使用? 展开
展开全部
关于模态对话框和非模态对话框的解释:
模态对话框(Modal Dialogue Box,又叫做模式对话框),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。一般来说,Windows应用程序中,对话框分为模态对话框和非模态对话框两种。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。
参考代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//窗口类
public class MyFrame extends JFrame implements ActionListener {
JButton jb1, jb2;
public MyFrame() {
jb1 = new JButton("模态对话框");
jb1.addActionListener(this);
jb2 = new JButton("非模态对话框");
jb2.addActionListener(this);
JPanel jp = new JPanel();
jp.add(jb1);
jp.add(jb2);
add(jp, BorderLayout.NORTH);
setTitle("窗口");//窗口标题
setSize(300, 200);//窗口大小
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//当点击窗口右上角的关闭按钮时,退出虚拟机,结束
}
public static void main(String[] args) {
MyFrame mf = new MyFrame();
mf.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
JButton jb = (JButton) e.getSource();
//判断按钮是哪一个被点击了
if (jb1 == jb) {
MyDialog md1 = new MyDialog(this, "模态对话框");
md1.setModal(true);//设置为模态窗口
md1.setVisible(true);//对话框可见
} else if (jb2 == jb) {
MyDialog md2 = new MyDialog(this, "非模态对话框");
md2.setVisible(true);
}
}
}
//对话框类
class MyDialog extends JDialog {
public MyDialog(Frame owner, String title) {
super(owner, title);// 调用JDialog父类的构造方法
//JDialog(Dialog owner, String title)
// 创建一个具有指定标题和指定所有者的对话框。
JLabel jl = new JLabel("弹出的窗口");
add(jl);
setSize(200, 120);//大小
// setModal(true);//设置为模态
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);//当点击对话框右上角的关闭按钮时,销毁该对话框
}
}
效果图
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询