-
2021-02-12 17:17:10
publicclasssystemJFrameextendsJFrame{.......//各种组件publicsystemJFrame(){.........menuItem.addActionListener(ActionListenera);//这里有一个菜单项监视器,选中菜单项会去执行...
public class systemJFrame extends JFrame{
.......//各种组件
public systemJFrame(){
.........menuItem.addActionListener(ActionListener a);//这里有一个菜单项监视器,选中菜单项会去执行create方法
}
private class listener implements ActionListener{
public actionPerformed(ActionEvent e){
.......create();//这里调用一个方法
}
}
void create(){
sysDialog dialog=new sysDialog(this,".......");//我是想让对话框依赖于systemJFrame的窗口
.........
dialog.setModal(true);//我已经设置了这一句,另外把setModel放在sysDialog类里也不行
...........
}
private class sysDialog extends JDialog{
sysDialog(JFrame f,String s){
super(f,s);
.......
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
}
public static void main(String args[]){
systemJFrame system=new systemJFrame();
system.setVisible(true);
...........
}
}结果执行出来就是不是有模式对话框,到底怎么搞的,一开始成功了但是关不了对话框,后来我改了改代码能关了又不是有模式对话框了。。大神指教啊,急需变成有模式对话框
展开
更多相关内容 -
java 模式对话框与非模式对话框的比较
2021-03-01 08:49:45packagecom.zhao.myDlg;importjava.awt.*;importjava.awt.event.*;publicclassMyframe{publicstaticvoidmain(Stringargv[]){finalFramef1=newFrame();Buttonb1=newButton("click");f1.add(b1);f1.setSize(400...packagecom.zhao.myDlg;
importjava.awt.*;
importjava.awt.event.*;
publicclassMyframe {
publicstaticvoidmain(String argv[]) {
finalFrame f1 =newFrame();
Button b1 =newButton("click");
f1.add(b1);
f1.setSize(400,400);
f1.setVisible(true);
f1.pack();
b1.addMouseListener(newMouseAdapter() {
publicvoidmouseClicked(MouseEvent e) {
finalDialog d =newDialog(f1,"dialog",true);
//final Dialog d = new Dialog(f1, "dialog", flase);
d.setSize(800,600);
//d.setVisible(true);
d.addWindowListener(newWindowAdapter() {
publicvoidwindowClosing(WindowEvent evt) {
d.setVisible(false);
}
});
d.setVisible(true);
}
});
f1.addWindowListener(newWindowAdapter() {
publicvoidwindowClosing(WindowEvent evt) {
System.exit(0);
}
});
}
}
比较模式对话框与非模式对话框
模态的就是始终最前,阻塞别的线程直至对话框线程结束
你可以在构造的时候用:JDialog(Dialog owner, String title, boolean modal)
如果你是extends JDialog ;有了自己的构造函数;
可以在自己的构造函数调用父类即是JDialog的构造函数来实现,定义模式非模式;
调用方法 super(adminUI, "添加职员帐户", true);
也可以构造完之后调用public void setModal(boolean b)
1.非模式对话框(false) + d.setVisible(true);在d.addWindowListener前这样click后弹出的非模式对话框可以关闭2.模式对话框(true) + d.setVisible(true);在d.addWindowListener前这样click后弹出的非模式对话框不可以关闭3.模式对话框(true) + d.setVisible(true);在d.addWindowListener后这样click后弹出的非模式对话框可以关闭总结:System.exit(0); 退出程序 d.setVisible(false); 隐藏不可见对于模式对话框,setVisible或者show以后,是被blocked掉的,也就是这之后的addWindowListener根本不会执行,知道对话框被关闭。 而addWindowListener不被执行的话,对话框是不会被关闭的。所以你的程序就永远关不了。把 addWindowListener放在setVisible之前就行了。
-
模式对话框与非模式对话框的区别2
2021-12-06 20:44:06模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口...模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口进行操作就操作不了,这种叫做模式对话框;关闭技术支持信息,在系统属性里选择硬件,点击设备管理器,弹出设备管理器窗口,现在再对系统属性窗口进行操作仍然可以操作,这种就叫做非模式对话框。
在WIN32中,模式对话框的创建一般是使用DialogBox来进行创建的。而非模式对话框则是利用CreateWindow来创建的。在MFC或是WTL中,模式对话框一般是使用DoModal,而非模式对话框的创建则是使用Create。
一、使用中的区别
模式对话框创建后,程序的其他窗口便不能进行操作,必须将该窗口关闭后,其他窗口才能进行操作。而非模式对话框则无需这样,它不强制要求用户立即反应,而是与其他窗口同时接受用户操作。
二、消息响应的区别
在消息响应方面,模式对话框和非模式对话框之间又有着很大的区别。模式对话框工作的时候,它有内部的消息泵机制,控件之间的交互不用我们人为的去控制,系统会帮助我们去处理。非模式对话框则像普通窗口一样,则由WinMain中书写的消息循环驱动。但由于是对话框,它对一些消息有特殊的处理。因此,在消息循环中,需要先对对话框提供截获消息的机会。
While (GetMessage(&msg, NULL, 0, 0))
{
if (hDlgModeless == 0 || !IsDialogMessage(hDlgModeless, &msg))
{
TranslateMessage(&msg);
DispatchMessage( &msg);
}
}
如果当前取得的消息是对话框的消息,IsDialogMessage 将它交由对话消息处理函数处理,并返回TRUE。不需要再派发了。
注意:这个方法并不是很好用,因为当对话框过多的时候,处理起来就比较麻烦了。另一种处理的方法是利用子类化控件的方法,来处理控件间的交互。
三、销毁的区别
模式对话框的销毁是使用EndDialog,而非模式对话框的销毁是使用DestroyWindow.。所以我们在销毁对话框的时候,也要对其进行区别。
非模式对话框,用户关闭对话框时,对话框消息处理函数将收到WM_CLOSE消息,接到后调用DestroyWindow以销毁非模式对话框。
模式对话框,则一般响应IDOK和IDCANCEL。在PPC上,我们对于OK键和X键的处理要注意这点。
四、其他
非模态对话框的模板必须具有Visible风格,否则对话框将不可见,而模态对话框则无需设置该项风格。更保险的办法是调用ShowWindow(hDialog, SW_SHOW)来显示对话框,而不管对话框是否具有Visible风格。
非模态对话框对象是用new操作符在堆中动态创建的,而不是以成员变量的形式嵌入到别的对象中或以局部变量的形式构建在堆栈上。通常应在对话框的拥有者窗口类内声明一个指向对话框类的指针成员变量,通过该指针可访问对话框对象。
通过调用Create函数来启动对话框,而不是DoModal,这是模态对话框的关键所在。由于Create函数不会启动新的消息循环,对话框与应用程序共用同一个消息循环,这样对话框就不会垄断用户的输入。Create在显示了对话框后就立即返回,而DoModal是在对话框被关闭后才返回的。众所周知,在MFC程序中,窗口对象的生存期应长于对应的窗口,也就是说,不能在未关闭屏幕上窗口的情况下先把对应的窗口对象删除掉。由于在Create返回后,不能确定对话框是否已关闭,这样也就无法确定对话框对象的生存期,因此只好在堆中构建对话框对象,而不能以局部变量的形式来构建之。
因为是用new操作符构建非模态对话框对象,因此必须在对话框关闭后,用delete操作符删除对话框对象。
必须有一个标志表明非模态对话框是否是打开的。这样做的原因是用户有可能在打开一个模态对话框的情况下,又一次选择打开命令。程序根据 标志来决定是打开一个新的对话框,还是仅仅把原来打开的对话框激活。通常可以用拥有者窗口中的指向对话框对象的指针作为这种标志,当对话框关闭时,给该指 针赋NULL值,以表明对话框对象已不存在了。
注意:在C++编程中,判断一个位于堆中的对象是否存在的常用方法是判断指向该对象的指针是否为空。这种机制要求程序员将指向该对象的指针初始化为NULL值,在创建对象时将返回的地址赋给该指针,而在删除对象时将该指针置成NULL值。
模态 非模态 形式上 ①一个模式对话框是一个有系统菜单、标题栏、边线等的弹出式窗口。在创建对话框时指定WS_POPUP, WS_SYSMENU, WS_CAPTION和 DS_MODALFRAME风格。即使没有指定WS_VISIBLE风格,模式对话框也会被显示。
②创建对话框窗口时,将发送WM_INITDIALOG消息(如果指定对话框的DS_SETFONT风格,还有WM_SETFONT消息)给对话框过程。(对话框的窗口过程由Windows系统提供,用户在创建对话框窗口时提供一个对话框过程由窗口过程调用。)
③对话框窗口被创建之后,Windows使得它成为一个激活的窗口,它保持激活直到对话框过程调用::EndDialog函数结束对话框的运行或者Windows激活另一个应用程序为止,在激活时,用户或者应用程序不可以激活它的所属窗口(Owner window)。①一个无模式对话框是一个有系统菜单、标题栏、边线等的弹出式窗口。在创建对话框模板时指定WS_POPUP、WS_CAPTION、WS_BORDER和WS_SYSMENU风格。如果没有指定WS_VISIBLE风格,无模式对话框不会自动地显示出来。
②一个无模式对话框既不会禁止所属窗口,也不会给它发送消息。当创建一个模式对话框时,Windows使它成为活动窗口,但用户或者程序可以随时改变和设置活动窗口。如果对话框失去激活,那么即使所属窗口是活动的,在Z轴顺序上,它仍然在所属窗口之上。
创建 DoModal() Create() 销毁 一个应用程序通过调用::EndDialog函数来销毁一个模式对话框。一般情况下,当用户从系统菜单里选择了关闭(Close)命令或者按下了确认(OK)或取消(CANCLE)按钮,::EndDialog被对话框过程所调用。调用::EndDialog时,指定其参数nResult的值,Windows将在销毁对话框窗口后返回这个值,一般,程序通过返回值判断对话框窗口是否完成了任务或者被用户取消。
※ EndDialog(IDC_BUTTON_DEFAULT);我们的代码中EndDialog方法在指定的BUTTON处理事件结束时调用,来关闭对话框在应用程序结束之前,它必须销毁所有的无模式对话框。使用::DestroyWindow销毁一个无模式对话框,不是使用::EndDiaLog。一般来说,对话框过程响应用户输入,如用户选择了“取消”按钮,则自动调用::DestroyWindow;如果用户没有有关动作,则应用程序必须调用::DestroyWindow。
-
Java 对话框
2020-07-08 18:22:35对话框可分为:有模式对话框,只让应用程序响应当前对话框内的事件,非模式对话框可响应窗体中的事件。 对话框的种类: 通用对话框:Dialog,JDialog。 Dialog(Frame, boolean);//以指定父窗体和指定模式创建对话框 ...java 对话框
对话框与窗口的区别:
- 对话框不能自动实现菜单;
- 对话框必须依赖于其他其他窗口才可实现。
- 对话框可分为:有模式对话框,只让应用程序响应当前对话框内的事件,非模式对话框可响应窗体中的事件。
对话框的种类:
通用对话框:Dialog,JDialog。
Dialog(Frame, boolean);//以指定父窗体和指定模式创建对话框 Dialog(Frame, String, boolean);//以指定父窗,指定标题和指定模式创建对话框 以及其各成员方法,略
文件对话框:FileDialog,JFileChooser。
FileDialog(Frame);//以指定父窗体 FileDialog(Frame, String);//以指定父窗,指定标题创建对话框 FileDialog(Frame, String,int);//以指定父窗,指定标题创建对话框和打开方式,创建对话框。 以及其各成员方法,略
JFileChooser的创建与Filedialog不同。其步骤为:
1. 创建JFileChooser文件对象:
public JFileChooser();
2. 调用其成员方法生成对话框:
//创建打开文件对话框
public void showOpenDialog(Component parent);
//创建保存文件对话框
public void showSaveDialog(Component parent);颜色对话框:
可以用Javax.swing.JColorChooser类的静态方法来创建:public static Color showDialog( Component parentComponent; String tilte; Color initialColor) For Example: //该对话框的父窗体为该行语句所在的对象----this Color newColor = JColorChooser.showDialog(this, "选择颜色", Color.red);
消息对话框,输入对话框,确认对话框:—JOptionPanel类。
消息对话框:
public static void showMessageDialog( Component parentComponent;//指定父窗体 String Message;//对话框上的消息字符串 String tilte;//对话框标题 int Message Type;//消息对话框的信息类型 // PLAIN_MESSAGE:对话框上不含任何图标 // WARNING_MESSAGE:警告图标⚠️ // QUESTION_MESSAGE:问题图标 // INFORMATION_MESSAGE:信息图标 // ERROR_MESSAGE:错误图标 Icon icon; Object[] option; Object initialValue) For example: JOptionPanel.showMessageDialog(null, "消息说明", "确认对话框",PLAIN_MESSAGE );
确认对话框:
public static void showConfirmDialog( Component parentComponent;//指定父窗体 String Message;//对话框上的消息字符串 String tilte;//对话框标题 int Message Type;//对话框的选项个数 // DEFAULT_OPTION:只有确定按钮 // YES_NO_OPTION:是、否按钮 // YES_NO_CANVEL_OPTION:是,否和取消按钮 // OK_CANCEL_OPTION:确定,取消按钮 Icon icon; Object[] option; Object initialValue) For example: JOptionPanel.showConfirmDialog(null, "消息说明", "标题",DEFAULT_OPTION );
输入对话框:
String name = JOptionPnael.showInputDialog(null,"请输入名字","输入对话框",JOptionPanel.INFORMATION_MESSAGE);
-
JAVA的模式对话框和非模式对话框
2019-09-29 20:56:44周末的时候,一位网友让我帮他把他的无模式对话框改成有模式对话框。... 然后就去查资料,JAVA的模式对话框是如何调用的。终于查到了需要用到JDialog类,JDialog的构造函数里可以指定是否是模式对话框。 1 ... -
java-为Swing小程序/应用程序创建自定义模式对话框
2021-03-17 20:44:35在这种情况下,我想向用户显示一个自定义模式对话框(即一个具有自定义布局和逻辑的复杂对话框,而不仅仅是简单的JOptionPane提示之一).如果对话框是完全包含在应用程序窗口中的轻量级组件,那就很好.同时,应用程序中将... -
JAVA有模式对话框
2010-01-21 15:51:20编写一个应用程序,用户可以在一个文本框里输入数字字符,按回车键后将数字放入一个文本区。当输入的数字大于1000时,弹出一个有模式的对话框,提示用户数字已经大于1000,是否继续将该数字放入文本区。 -
自学整理一:java文件对话框的使用(包括文件多选,文件、文件夹同时可选操作)
2021-02-12 13:56:50老早写的,现在转移阵地在java中有两种方式调用文件对话框(1)一种是AWT中的FileDialog类,通过FileDialog类创建一个对象,该对象即是所需要的对话框,例如,FileDialog dialog=new FileDialog(new Frame(),"选择存放... -
java实用教程——组件及事件处理——对话框(dialog)
2021-08-13 21:52:08对话框: import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.*; import java.awt.event.*; public class DialogDemo1 { public static void main(String[] args) { ... -
Java输入对话框/确认对话框/多媒体系统简介
2020-05-11 20:21:27Java输入对话框 输入对话框只有"确认"和"取消"按钮,通过点击确定按钮后返回输入框中的字符串,否则返回null 使用JOptionPane类的静态方法进行创建 public static String showInputDialog(Component parentComponent,... -
JAVA学习 四(对话框)
2021-03-13 21:45:19加入对话框 我们的程序主功能已经完成了,现在我们要试着让它看起来更像一个完整的应用程序。 接下来的几章,我们要为"BMI"应用程序加上一个选单。选单里面有一个"关于.."选 项 。 按下"关于..."选项后,会弹出一个... -
java - 从头开始创建模式对话框 - 堆栈内存溢出
2021-03-17 14:10:44我正在尝试为用户单击按钮时...我一直在浏览各种Java源文件(例如JOptionPane和JDialog以弄清楚它们是如何执行的,以便在用户关闭对话框之前阻塞线程,但我没有设法理解它。 另外,我尝试了各种代码片段,包括Even... -
Java中的提示对话框源代码
2021-03-06 19:32:101.显示一个错误对话框,该对话框显示的 message 为 'alert':JOptionPane.showMessageDialog(null, "alert", "alert", JOptionPane.ERROR_MESSAGE);2.显示一个内部信息对话框,其 message 为 'information':... -
无模式对话框和有模式对话框
2019-07-27 07:00:53无模式对话框 - 对话框显示后,不影响其它窗口的使用 有模式对话框 - 对话框显示后,会将其它窗口禁止输入操作. 2、两者的创建差异 无模式对话框 -使用CreateDialog函数 有模式对话框 -使用DialogBox函数 3... -
Java Swing 对话框
2020-03-22 19:52:02本文介绍了 Java 中 Swing 对话框的相关内容。。。 -
java中显示对话框与模式窗口.doc
2022-06-09 20:10:42java中显示对话框与模式窗口 -
java-如何使“打开方式”对话框?
2021-03-13 22:22:07如果单击文件,则意味着将出现“打开方式”对话框,并且该对话框将包含所有已安装程序的列表.我正在使用以下代码搜索文件:public File[] finder( String dirName){// Create a file object on the directory.File dir... -
java中文件选择对话框
2021-04-18 00:39:48java中打开文件话框我们可以,调用j操作系统的文件对话框: public class ChooseFile extends MouseAdapter{private JTextField filePathFild;private JFrame frame;private FileDialog fileDialog;private String ... -
将模式对话框的返回值回送(PostBack)到服务端
2021-03-22 15:02:59作者:张老三的专栏...举个例子:比方说新建一个订单,此时希望能在模式对话框中选择产品,并将产品的ID返回,同时刷新订单中的产品项,解决的方法有多种,这里只介绍执行服务器操作的方法。要将客户端数据回... -
java实用教程——组件及事件处理——对话框(消息对话框,输入对话框,确认对话框)
2021-08-10 11:33:49public class Example9_16 { public static void main... win.setTitle("带消息对话框的窗口"); win.setBounds(80,90,350,300); } } package 例题; import java.awt.event.*; import java.awt.*; imp -
Java文件对话框/消息对话框/指令系统简介
2020-05-09 22:11:46JFileChoose类可以创建文件对话框//创建的是有模式不可见得对话框//调用下面的方法就变得可见了 showSaveDialog(Component e)//显示保存文件对话框//e是指定的位置 showOpenDialog(Component e)//显示打开文件... -
利用Java Swing设计通用对话框
2021-03-11 11:47:06在Java Swing编程中,程序员还可以自定义对话框,一般可以从JDialog类来继承。下面给出一个对话框类的代码:class HelpAbout extends JDialog implements ActionListener{ JavaWord mainFrame; JButton okButton;... -
java使用模式对话框添加新用户到数据库
2019-07-18 20:15:41import javax.swing.*;...import java.awt.event.*; import java.awt.*; import java.sql.SQLException; public class DialogDemo extends JFrame implements ActionListener { private JMenu... -
java swing开发窗体程序开发(五)对话框
2021-01-25 15:41:011:有模式对话框:当这个对话框处于激活状态时,不能激活其他对话框,且将会 阻塞其他线程。直到这个对话框关闭之后才能进行其他操作 2:无模式对话框:与有模式相反,当这个对话框处于激活状态时,仍能够激活其 他... -
Java对话框Dialog
2021-02-02 11:32:52对话框有非模式(non-modal)和模式(modal)两种,当某个模式对话框被打开后,该模式对话框总是位于它的父窗口之上,在模式对话框被关闭之前,父窗口无法获得焦点。 方法名称 方法功能 Dialog(Frame owner -
模式对话框和无模式对话框 区别
2014-04-21 15:33:17模式对话框(modal dialog box模态对话框):在关闭模式对话框之前,程序不能进行其他工作(如一般的“打开文件”对话框) ??无模式对话框(modeless dialog box 非模态对话框):模式对话框打开后,程序仍然... -
Java对话框上显示图片
2021-03-04 09:24:26优点是可以节省系统资源, 显示图片的时候,不用做处理,缺点是需要了解ps的基本操作使用JDialog 自定义对话框. 优点 可以实现复杂的效果, 缺点,代码量比较多使用ImageIcon, Image 类 实现图片的缩放,. 优点: 纯java... -
java实用教程——组件及事件处理——对话框(颜色对话框,自定义对话框)
2021-08-10 16:01:42创建一个有模式的颜色对话框,其中参数component指定颜色对话框可见时的位置,颜色对话框在参数component指定的组件的正前方显示出来,如果 component为null,颜色对话框在屏幕的正前方显示出来。 title指定对话框的... -
添加模式对话框
2019-10-07 22:09:11区别:在清除对话框之前,模式对话框使它所属的窗口(它的所有者)一直处于无效状态;无模式对话框则在其显示时,它的所有者也能被激活。 显示模式对话框需要调用CDialog::DoModal,而无模式调用CDialog::Create。...