Java中 对话框弹出时如何屏蔽其父窗口,即父窗口变灰?
3个回答
展开全部
这要看你用的是什么包,
如果是swt包的话,
在初始化 子窗口时
写成:
shell = new Shell(display, SWT.APPLICATION_MODAL | SWT.CLOSE | SWT.MAX);
只要添加 SWT.APPLICATION_MODAL 参数就可以。
如果是AWT的话,
我转一个百度上其他帖子的答案:
楼主问为什么使用Dialog创建模式窗口,我的回答如下:
首先我们先看下在操作系统中是如何创建窗口的,这是WIN32 API:
invoke CreateWindowEx,dwExStyle,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam
对于一个普通的窗口,其中hMenu是指要出现的菜单的句柄,然后————当建立的窗口是子窗口时,这个参数是另一个含义,这时hMenu参数指定的是子窗口的ID号,那么结果是————节省一个参数的位置,同时子窗口也不会有菜单了。所以要想子窗口有菜单只有微软自己可以做到了。
回到模式窗口的问题上来,模式窗口是子窗口,所以不会有菜单,那为什么只能用Dialog创建模式窗口呢,这是JAVA设计是确定的,即使开放了Frame的setModal,也没用,因为得到的结果还是一个和Dialog没有区别的窗口,这种情况在其它语言里是存在的。
import java.awt.*;
import java.awt.event.*;
public class TestDialog {
public TestDialog() {
final Frame f1 = new Frame("1");
f1.setSize(500, 500);
f1.setVisible(true);
Button b = new Button("Exit");
TextArea jt = new TextArea(3, 0);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(1);
}
});
Dialog dlinf1 = new Dialog(f1, "这是为了100分特地做的一段代码");
dlinf1.setSize(300, 300);
dlinf1.add(b, "North");
dlinf1.add(jt,"Center");
dlinf1.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
dlinf1.setModal(true);
dlinf1.setVisible(true);
}
public static void main(String[] args) {
new TestDialog();
}
}
http://zhidao.baidu.com/question/103778358.html
就是你声名一个Dialog 之后再设置他的 .setModal(true); 就可以了。
setModal 就是设置窗口模式,为true,就是对当前程序来说,使窗口在最前,不关掉它,其它窗口就不能用.
其中 swt包的
SWT.APPLICATION_MODAL
是一个意思,只是使用方法不同.
如果是swt包的话,
在初始化 子窗口时
写成:
shell = new Shell(display, SWT.APPLICATION_MODAL | SWT.CLOSE | SWT.MAX);
只要添加 SWT.APPLICATION_MODAL 参数就可以。
如果是AWT的话,
我转一个百度上其他帖子的答案:
楼主问为什么使用Dialog创建模式窗口,我的回答如下:
首先我们先看下在操作系统中是如何创建窗口的,这是WIN32 API:
invoke CreateWindowEx,dwExStyle,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam
对于一个普通的窗口,其中hMenu是指要出现的菜单的句柄,然后————当建立的窗口是子窗口时,这个参数是另一个含义,这时hMenu参数指定的是子窗口的ID号,那么结果是————节省一个参数的位置,同时子窗口也不会有菜单了。所以要想子窗口有菜单只有微软自己可以做到了。
回到模式窗口的问题上来,模式窗口是子窗口,所以不会有菜单,那为什么只能用Dialog创建模式窗口呢,这是JAVA设计是确定的,即使开放了Frame的setModal,也没用,因为得到的结果还是一个和Dialog没有区别的窗口,这种情况在其它语言里是存在的。
import java.awt.*;
import java.awt.event.*;
public class TestDialog {
public TestDialog() {
final Frame f1 = new Frame("1");
f1.setSize(500, 500);
f1.setVisible(true);
Button b = new Button("Exit");
TextArea jt = new TextArea(3, 0);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(1);
}
});
Dialog dlinf1 = new Dialog(f1, "这是为了100分特地做的一段代码");
dlinf1.setSize(300, 300);
dlinf1.add(b, "North");
dlinf1.add(jt,"Center");
dlinf1.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
dlinf1.setModal(true);
dlinf1.setVisible(true);
}
public static void main(String[] args) {
new TestDialog();
}
}
http://zhidao.baidu.com/question/103778358.html
就是你声名一个Dialog 之后再设置他的 .setModal(true); 就可以了。
setModal 就是设置窗口模式,为true,就是对当前程序来说,使窗口在最前,不关掉它,其它窗口就不能用.
其中 swt包的
SWT.APPLICATION_MODAL
是一个意思,只是使用方法不同.
展开全部
代码如下:
import java.awt.*;
import java.awt.event.*;
public class TestDialog {
public TestDialog() {
final Frame f1 = new Frame("1");
f1.setSize(500, 500);
f1.setVisible(true);
Button b = new Button("Exit");
TextArea jt = new TextArea(3, 0);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(1);
}
});
Dialog dlinf1 = new Dialog(f1, "这是为了100分特地做的一段代码");
dlinf1.setSize(300, 300);
dlinf1.add(b, "North");
dlinf1.add(jt,"Center");
dlinf1.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
dlinf1.setModal(true);
dlinf1.setVisible(true);
}
public static void main(String[] args) {
new TestDialog();
}
}
import java.awt.*;
import java.awt.event.*;
public class TestDialog {
public TestDialog() {
final Frame f1 = new Frame("1");
f1.setSize(500, 500);
f1.setVisible(true);
Button b = new Button("Exit");
TextArea jt = new TextArea(3, 0);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(1);
}
});
Dialog dlinf1 = new Dialog(f1, "这是为了100分特地做的一段代码");
dlinf1.setSize(300, 300);
dlinf1.add(b, "North");
dlinf1.add(jt,"Center");
dlinf1.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
dlinf1.setModal(true);
dlinf1.setVisible(true);
}
public static void main(String[] args) {
new TestDialog();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在做Java开发时,如果做前台,可以选择Java swing图形用户界面来做,也可以选择HTML和JSP来做。
通常是用JSP做的,而弹框的实现必须要借助脚本才能实现。在实现子窗口弹出时,父窗口变灰的效果需要比较复杂的JavaScript脚本,这里不具体写完整代码,仅提供一种思路:
页面在加载的时候,在页面后面写一个空的div,其后再跟一个隐藏域,用来存放子窗口内容。
当页面某个事件被触发的时候(如:按钮被点击),将空div的大小调节为当前浏览器的大小一样大,同时设置其背景色为黑色,透明度为50%;再将子窗口的内容显示出来,放到页面正中间即可。
通常是用JSP做的,而弹框的实现必须要借助脚本才能实现。在实现子窗口弹出时,父窗口变灰的效果需要比较复杂的JavaScript脚本,这里不具体写完整代码,仅提供一种思路:
页面在加载的时候,在页面后面写一个空的div,其后再跟一个隐藏域,用来存放子窗口内容。
当页面某个事件被触发的时候(如:按钮被点击),将空div的大小调节为当前浏览器的大小一样大,同时设置其背景色为黑色,透明度为50%;再将子窗口的内容显示出来,放到页面正中间即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |