可以说,我们有几个JFrame窗口同时可见,并且每个窗口都出现JDialog.当我们的窗口处于级联模式和对话框setAlwaysOnTop为真时,所有对话框将在最后一个窗口中可见.

我只想将Dialog组件与其所有者关联起来,这样当你在Frames之间切换时,你只会在顶部获得一个对话框,并且在单击一个框架时不会丢失该对话框.

对话框有这样的构造函数:

setAlwaysOnTop(true);

setModal(false);

提前致谢!

解决方法:

How to make JDialog onTop only for his parent?

> setParent in the constructor properly

>必须使用setModalityType f.e. ModalityType.DOCUMENT_MODAL ModalityType.APPLICATION_MODAL而不是setModal

> setModal对初始化/是此JDialog的父级的容器有效

>不要使用多个JFrame,而是使用JDialog,将此容器重新用于其他操作

例如

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class SuperConstructor extends JFrame {

private static final long serialVersionUID = 1L;

public SuperConstructor() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setPreferredSize(new Dimension(300, 300));

setTitle("Super constructor");

Container cp = getContentPane();

JButton b = new JButton("Show dialog");

b.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent evt) {

FirstDialog firstDialog = new FirstDialog(SuperConstructor.this);

}

});

cp.add(b, BorderLayout.SOUTH);

JButton bClose = new JButton("Close");

bClose.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent evt) {

System.exit(0);

}

});

add(bClose, BorderLayout.NORTH);

pack();

setVisible(true);

}

public static void main(String args[]) {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

SuperConstructor superConstructor = new SuperConstructor();

}

});

}

private class FirstDialog extends JDialog {

private static final long serialVersionUID = 1L;

FirstDialog(final Frame parent) {

super(parent, "FirstDialog");

setPreferredSize(new Dimension(200, 200));

setLocationRelativeTo(parent);

setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

setModalityType(Dialog.ModalityType.APPLICATION_MODAL);

JButton bNext = new JButton("Show next dialog");

bNext.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent evt) {

SecondDialog secondDialog = new SecondDialog(parent, false);

}

});

add(bNext, BorderLayout.NORTH);

JButton bClose = new JButton("Close");

bClose.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent evt) {

setVisible(false);

}

});

add(bClose, BorderLayout.SOUTH);

pack();

setVisible(true);

}

}

private int i;

private class SecondDialog extends JDialog {

private static final long serialVersionUID = 1L;

SecondDialog(final Frame parent, boolean modal) {

//super(parent); // Makes this dialog unfocusable as long as FirstDialog is visible

setPreferredSize(new Dimension(200, 200));

setLocation(300, 50);

setModal(modal);

setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

setTitle("SecondDialog " + (i++));

setModalityType(Dialog.ModalityType.APPLICATION_MODAL);

JButton bClose = new JButton("Close");

bClose.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent evt) {

setVisible(false);

}

});

add(bClose, BorderLayout.SOUTH);

pack();

setVisible(true);

}

}

}

标签:java,modal-dialog,swing,jdialog

来源: https://codeday.me/bug/20190529/1179407.html

java top.dialog控件,java – 如何只为他的父级创建JDialog onTop?相关推荐

  1. java程序获取外部java程序的控件,将 Java 小程序迁移到 Microsoft J# 浏览器控件-JSP教程,Java技巧及代码...

    visual j# .net 小组 microsoft corporation 摘要:通过 microsoft j# 浏览器控件,开发人员可以将所编写的在 java 虚拟机上运行的 java 小程序迁 ...

  2. Java调用ocx控件以及dll

    2019独角兽企业重金招聘Python工程师标准>>> http://lvqingboy-163-com.iteye.com/blog/769358 通过Java调用OCX控件有几种 ...

  3. 龙博方案网Big Faceless Java图形展现控件详细介绍及下载

    2019独角兽企业重金招聘Python工程师标准>>> Graph Library 是用于以Java创建图形和图表的Java类库.它使用全三维模式,可在 PNG.Flash.PDF或 ...

  4. java调用ocx控件(ActiveX控件),SWT调用ocx(ActiveX)

    java调用ocx控件(ActiveX控件),SWT调用ocx(ActiveX) 注 : OLE.OCX.ActiveX不进行过多阐述,简单理解就是插件,组件类 调用成功,即可展示ocx对应的窗口 ​ ...

  5. java调用ocx控件获取数据_Java调用ocx控件以及dll

    通过Java调用OCX控件有几种方法,JNI.JACOB.Jawin等 1.JNI 最直接的方式,也是最麻烦的方式,需要自己完成所有的工作,不推荐. 2.Jawin 尝试了一下,效果不错,但相对来说, ...

  6. JQuery1.2.6 ui.dialog控件在IE6下标题栏显示不正常的问题解决

    由于项目中用到了jquery1.2.6版的dialog控件,可以较好地解决一些用户选择.单位选择的问题,也比较美观,但后来发现在IE6下显示有点不正常,截图请参见最后,经过查看源代码发现只要将css里 ...

  7. java swing 表格控件_java swing 开发 -JTable

    最近利用空闲时间自己琢磨了一下java swing 编程,其实在从事javaweb之前我一直向往的就是java swing 开发,不知道为什么可能当时觉得Windows上的exe程序很是神奇,关于wi ...

  8. java图形用户界面控件介绍,GUI(图形用户界面)详解

    一.GUI(图形用户界面) GUI Graphical User Interface(图形用户接口) 用图形的方式,来显示计算机操作的界面,这样更方便更直观 CLI Command line User ...

  9. Java Web打印控件(纯java手写版)

    场景: 向数据库中添加一条记录时,调用客户端局域网中的打印机自动将数据打印出来.(当然是客户端打印,服务器端打印还要控件???) 要求: 不弹出.不打印预览.直接自动打印.(静默打印) 需要兼容各大浏 ...

最新文章

  1. 想法1 : 突然萌发的 “天时地利人和”-----优化
  2. mysql实现组队_TiDB Hackathon 参考选题扩充,组队参赛走起!
  3. The Linux Command Line读书笔记(二)
  4. AndroidStudio下载安装教程(图文教程)
  5. AI大神贾扬清确认将离开Facebook,加入阿里硅谷研究院
  6. linux lvm管理实例,Linux系统管理之LVM案例
  7. GDCM:打印dicom文件的LookupTable的测试程序
  8. java break 在if 中使用_java中使用国密SM4算法详解
  9. MySQL流浪记(二)—— MySQL介绍及其特性
  10. 指点聚源码论坛全站源码 WordPress内核
  11. Asynchronous(异步处理-Promise)
  12. Kaggle 数据清洗挑战 Day 3 - 快速解析日期(date)数据
  13. SpringBoot整合freemarker找不到静态资源ftl文件解决办法
  14. linux android开发环境搭建
  15. 基于stm32智能车的设计(ucosiii)---北京之行
  16. 工作周记 - 第四周 (2016/06/12 - 2016/06/18) 我没喝多,但是今天话多了 - -
  17. 计算机派位志愿填报技巧,小升初电脑派位操作流程详解
  18. 2017年sfdc工作总结_Schema Builder
  19. 从键盘输入直接三角形的两条直接边的长度,求斜边的长度和三角形的面积,计算结果保留两位小数
  20. 微信开发之——接口调用频率xianzh

热门文章

  1. php 类文件加载 Autoloader
  2. JAVA基础----java中E,T,?的区别
  3. 工业控制系统专业术语(不断完善中)
  4. 如何用组策略来找到丢失的文件
  5. 分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容
  6. NHibernate初学者指南(6):映射模型到数据库之方式二
  7. 因为你的电脑安装了即点即用_即你所爱
  8. Java 到底有没有析构函数呢?
  9. 用什么代码可以改变键盘_为什么我改变了对代码质量的看法
  10. pymc3 贝叶斯线性回归_使用PyMC3进行贝叶斯媒体混合建模,带来乐趣和收益