我有一个模式设置对话框是一个JDialog.在这个设置窗口中,我将一些组件(包括一个按钮)放置到另一个模式设置对话框,该对话框也是一个JDialog.我使他们成为JDialogs,因为这是我知道进行模态对话的唯一方法.

问题是这样的:当我创建主设置对话框时,我必须构建JDialog,无需父帧或父帧.由于我的主窗口是一个JFrame,我可以把它传递给主设置对话框的构造函数.但是当我想创建第二个模态设置对话框时,应该将主设置对话框作为父项,我找不到一个方法来获取JDialog的(J)框架.我确实希望通过这个主设置对话框作为父级,以便第二个设置对话框显示在它上面.让我们假设第二个设置对话框没有用于传递位置的构造函数,只是JDialog的构造函数.

有没有办法得到JDialog的(J)框架?

我的设置是否存在设计缺陷,我应该用这些设置对话框中的其他内容吗? (如果是这样,我应该如何使这些替代设置对话框模态?)

感谢您的帮助,

埃里克

更新:

感谢大家的答案.他们让我明白,显然JDalog的所有者并不是绝对必要的.我认为这是对话框需要关闭所有者,直到对话框关闭,但显然模式是独立于所有者.我也注意到,即使是拥有者,对话框仍然不是所有者的中心,所以现在我的代码就像:

public class CustomDialog extends JDialog {

public CustomDialog(String title) {

setModal(true);

setResizable(false);

setTitle(title);

buildGUI();

}

public Result showDialog(Window parent) {

setLocationRelativeTo(parent);

setVisible(true);

return getResult();

}

}

这也允许模态对话框中的模态对话框.

感谢你的帮助!

不确定你有什么问题,但这里是一个例子,你可以有多个模态对话框:

import java.awt.BorderLayout;

import java.awt.Window;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.SwingUtilities;

public class TestDialog {

protected static void initUI() {

JPanel pane = newPane("Label in frame");

JFrame frame = new JFrame("Title");

frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);

frame.add(pane);

frame.pack();

frame.setVisible(true);

}

public static JPanel newPane(String labelText) {

JPanel pane = new JPanel(new BorderLayout());

pane.add(newLabel(labelText));

pane.add(newButton("Open dialog"),BorderLayout.SOUTH);

return pane;

}

private static JButton newButton(String label) {

final JButton button = new JButton(label);

button.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

Window parentWindow = SwingUtilities.windowForComponent(button);

JDialog dialog = new JDialog(parentWindow);

dialog.setLocationRelativeTo(button);

dialog.setModal(true);

dialog.add(newPane("Label in dialog"));

dialog.pack();

dialog.setVisible(true);

}

});

return button;

}

private static JLabel newLabel(String label) {

JLabel l = new JLabel(label);

l.setFont(l.getFont().deriveFont(24.0f));

return l;

}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

initUI();

}

});

}

}

java模态_java – 如何在另一个模态JDialog之上创建一个模态的JDialog相关推荐

  1. java jdialog 模态_java – 如何在另一个模态JDialog之上创建一个模态的JDialog

    不确定你有什么问题,但这里是一个例子,你可以有多个模态对话框: import java.awt.BorderLayout; import java.awt.Window; import java.aw ...

  2. Java web 开发填坑记 2 -如何正确的创建一个Java Web 项目

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72566261 本文出自[赵彦军的博客] Java web 开发填坑记 1-如何正确 ...

  3. SAP PM 入门系列11 - 一个维护通知单只能创建一个维护订单?

    SAP PM 入门系列11 - 一个维护通知单只能创建一个维护订单? 在SAP系统里,执行事务代码IW34,输入Notification号码100314924,以及Order type ZM03,试图 ...

  4. redirect java 配置_Java从后台重定向(redirect)到另一个项目的方法

    (1)通过ModelAndView跳转 @RequestMapping("alipayforward")public ModelAndView alipayforward(Http ...

  5. idea maven创建java项目_新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目(图文教程)...

    之前都没试过用maven来管理过项目,但是手动找包导包确实不方便,于是今天用2016版的IDEA进行了maven的初尝试. 打开IDEA,创建新项目: 然后选择Maven,以及选择自己电脑的jdk: ...

  6. java如何创建一个文本框_创建一个有文本框和三个按钮的程序。当按下某个按钮时,使不同的文字(Java..._考试资料网...

    问答题创建一个有文本框和三个按钮的程序.当按下某个按钮时,使不同的文字("Java","编程","不难学")显示在文本框中.已经给出部分代码 ...

  7. 页面怎么创建一个数组_怎么创建一个企业网站?

    怎么创建一个企业网站?互联网时代下,很多企业都纷纷搭建网站,网站不仅可以提高企业形象,还可以为企业带来盈利,那么怎么创建一个企业网站呢?下面小编来告诉你怎么搭建企业网站. 1.网站定位 做好企业网站建 ...

  8. python3怎么创建一个链表_怎么创建一个自己的微信公众号

    随着移动互联网的发展,微信公众号这两年成为媒体传播的重要平台.平时我们每个人都会接触见到到各种非常好的微信公众号内容,碰到喜欢的有帮助的也会自觉的转发朋友圈或者群,分享给自己身边的人.于是很多人就想了 ...

  9. python创建一个空的dataframe_python 创建一个空dataframe 然后添加行数据的实例

    实例如下所示: import pandas as pd import re import math dframe1 = pd.read_excel("window regulator分析报告 ...

最新文章

  1. 1.10 访问对象的属性和行为
  2. 密钥分离,.Net程序猿不再背锅
  3. 计算机能不能直接识别汇编语言程序,计算机能直接识别执行用汇编语言编写的程序吗...
  4. Eigen datamap 问题
  5. Decorator(装饰器)
  6. 工业机器人用铸铁牌号_蠕墨铸铁生产工艺
  7. sql 连接数不释放 ,Druid异常:wait millis 40000, active 600, maxActive 600
  8. Httpd-2.2.0虚拟主机目录权限问题
  9. SQLCODE=-1585
  10. C# BackgroundWorker的用法
  11. 软考中级软件设计师知识点总结
  12. 解决支付宝验证失败sign check fail: check Sign and Data Fail
  13. push ebp到底是什么意思
  14. 服务器物理安装,安装Nano Server物理服务器Hyper-V角色
  15. oracle中scott用户的创建
  16. 2022-2028全球CAE工程服务行业调研及趋势分析报告
  17. 中国工程院院士高文ICTC演讲《国家新一代人工智能发展规划》
  18. 域名解析配置 以及 修改DNS服务器(腾讯云域名注册商、阿里云DNS服务器)
  19. 【小组专题四点五:素数】素数的分布,素数定理,素数猜想与兰道问题
  20. linux 字符串数组初始化,Linux命令行 – 数组

热门文章

  1. mysql 存储过程 主键_存储过程生成主键
  2. ajax不能设置哪些header
  3. Shell 显示带颜色字体
  4. 06:甲流疫情死亡率
  5. JavaScript复习笔记(1)——AJAX
  6. 如何解决:Android中 Error generating final archive: Debug Certificate expired on 10/09/18 16:30 的错误...
  7. CentOS 5 安装as86汇编器
  8. MySql数据库使用入门
  9. 8086汇编语言显示带颜色的字符串程序学习 - 使用emu8086
  10. Promise.race 的原理