前言:
目前自己在寫一個動態畫面生成的小模塊,遇到的一個問題!
問題描述:
自己實現JDialog子類,子類里面組合了一些JComponent做用戶輸入,關閉JDialog的時候,一直無法成功獲得用戶輸入的數據!
解決歷程:
剛開始一直是NullPointerException! 然后跟蹤調試,發現沒有值,甚是奇怪!
思維歷程:
對于swing編程,自己理論上有兩個關注點:1,swing組件樹,swing 組件只會存在于在組件樹中的某一個節點
2,swing的edt單線程模型,如果阻塞的話,將讓應用程序看起來很卡!由于目前程序比較原始,所以檢查這兩點很
容易!
剛開始思考是不是線程引起的問題,比如內存可見性等!這個時候大都是抱著僥幸的心態,像只無頭的蒼蠅一樣亂碰,
所以結果是不言而喻的!
后來發現,肯定的是因為自己對swing的JDialog組件模型理解有誤,不正確使用造成的!
于是采用學習式原型簡化方法,忽略掉所以業務細節,用簡單swing程序模擬出目前的狀況,然后再來尋求問題的答案!
再解決簡化的問題后,再去解決業務中的問題,就容易了!
問題解決辦法:
1,對于非模態JDialog,在需要返回結果的情況下,需要采用觀察者模式,來解決問題
2,對于模態JDialog,可以按照程序流程,讓新建的dialog對象返回
事后總結
由于對于JDialog的模態,這個概念理解不正確,造成程序編寫異常!在JDialog非模態形態下,用模態的思考方式來解決問 題,所以解決不了問題!
雖然swing組件的模型很簡單mvc,但是具體概念也要理解清楚,才能解決問題
成功解決問題的方法也很重要!
分享到:
相关推荐
jDialog是一款基于jQuery的轻量级模态对话框插件,专为网页开发者设计,提供了一种简洁而高效的方式来创建各种弹出式对话框。其核心特性在于其轻巧的体积,压缩后仅1KB,这使得它在网页性能优化方面具有显著优势,...
模态对话框(Modal Dialog)是一种特殊的对话框,它会阻止用户与对话框背后的父窗口进行交互,直到该对话框被关闭。这在需要用户确认信息或输入数据时非常有用。 要创建一个自定义模态`JDialog`,我们需要以下步骤...
`jDialog`是一款基于jQuery的对话框插件,它提供了丰富的功能和自定义选项,使得创建各种类型的对话框变得简单而直观。 1. **jQuery基础** `jQuery`是一款轻量级的JavaScript库,它简化了DOM操作、事件处理、动画...
而jQuery.jDialog则是基于jQuery的一个轻量级对话框插件,它提供了一种高效、灵活的方式来创建弹出式对话框,为用户交互提供了丰富的可能性。本文将深入探讨jQuery.jDialog 1.1_1版本的核心特性、使用方法以及应用...
`jQuery.jDialog`是一个基于jQuery库的对话框插件,以其美观和功能丰富而受到开发者们的青睐。它允许开发者轻松地在网页中创建弹出式对话窗口,用于显示信息、确认操作、输入数据等各种交互场景。通过这个插件,可以...
JDialogJDialog
一个页面同时只能显示一个窗口; 窗口显示需要指定一个页面上的对象做为窗口显示做置定位,这样窗口会出现在哪个东西的下面,就像下拉列表一样. 不能拖动(我们不需要这样的功能); 可以点击窗口之外的任意区域来...
1. 创建一个`JDialog`实例,传入`null`表示创建一个无父窗口的对话框,或者传入一个`JFrame`或`JDialog`实例作为其父窗口。 2. 添加内容到对话框,这可能包括标签、文本框、按钮等`JComponent`实例。 3. 设置对话框...
JDialog是Java Swing库中的一个组件,它用于创建独立于主应用程序窗口的对话框。而JTextArea则是一个多行文本输入组件,适合用来展示或编辑大量文本数据。 首先,我们来深入理解JDialog。JDialog是JFrame的子类,...
JDialog 是 Java Swing 库提供的一个用于创建对话框窗口的组件,可以在应用程序中显示模态或非模态的自定义对话框。
本教程将深入探讨如何使用`JFrame`来模拟`JDialog`的效果,实现一个模式窗口。 首先,我们需要了解`JDialog`的基本特性。`JDialog`是依赖于父窗口(通常是`JFrame`)的,它可以在父窗口之上显示,可以设置为模态或...
JDialog是一个简单易用但是功能强大的开源JS弹出窗口,具有很强的扩展性和兼容性,兼容IE6.0,目前版本1.2. 1. 包括锁屏对象JDialog.lock, 提示工具 JDialog.tip, 确认框 JDialog.confirm 弹出窗口 JDialog.win 比...
其中,jDialog是一款基于jQuery的自定义对话框插件,它提供了多种对话框样式和功能,极大地增强了网页的用户体验。本文将深入探讨jDialog的源码结构、核心功能和实际应用。 一、jDialog概述 jDialog是一款轻量级的...
在Java编程语言中,`JDialog`是Java Swing库中的一个关键组件,它用于创建对话框,这是一种特殊的窗口,通常用来向用户展示信息或者获取用户的输入。`JDialog`类是`java.awt.Dialog`的子类,专为Swing应用程序设计,...
JPopupWin是针对Java Swing中的JDialog组件进行优化和增强的一个版本,旨在提供更美观、功能更丰富的对话框体验。 在Java编程中,JDialog是一个用于创建模态或非模态对话框的组件,它是JFrame的子类。它通常用来...
`jDialog`插件就是一个这样的工具,专门用于创建基于jQuery的多种类型的自定义对话框,它具有轻量级、易用且功能丰富的特点。 首先,让我们深入了解一下jQuery。jQuery是一个广泛使用的JavaScript库,它的主要目标...
JDialog 窗体的功能是从一个窗体中弹出另一个窗体,就像是在使用浏览器时弹出的确定对话框一样。 JDialog 窗体和 JFrame 窗体类似,在使用时也需要调用 getContentPane() 方法将窗体转换为容器,然后在容器中设置...
其中,JDialog 是一个常用的对话框组件,经常与 JOptionPane 配合使用来提供模态或非模态对话框。下面,我们将详细介绍如何使用 JDialog 在 Java Swing 中实现用户登录 UI。 JDialog 的基本概念 JDialog 是一个...
可滚动 JDialog 示例。 许可证: ---------- 本项目中提供的所有程序/软件均在 APACHE LICENSE, VERSION 2.0 下发布。 可以在此处找到许可证详细信息:https://www.apache.org/licenses/LICENSE-2.0。 本许可的某些...