JavaFX直到目前最新的1.2.1版本里没有提供模态窗口或着对话框,我在项目里通过扩展Control自己实现了一个简单的模态窗口,控件由2个类Window.fx和WindowSkin.fx组成,在WindowSkin里实现了Skin的抽象方法contains,在模态下始终返回true。
下面是控件的源码和一个演示demo。
Window.fx
package
org.jqueen.fx.scene.control;
import
javafx.scene.Node;
import
javafx.scene.image.Image;
import
javafx.scene.control.Control;
/**
*
@author
Leon Chen
*/
public
class
Window
extends
Control {
public
var modal: Boolean;
public
var background: Image;
public
var content: Node[];
override
protected
function create(): Node {
skin
=
WindowSkin {};
super
.create();
}
}
WindowSkin.fx
package
org.jqueen.fx.scene.control;
import
javafx.scene.control.Skin;
import
javafx.scene.Group;
import
javafx.scene.image.ImageView;
/**
*
@author
Leon Chen
*/
package
class
WindowSkin
extends
Skin {
def windowControl
=
bind control as Window;
def bounds : Bounds = bind windowControl.boundsInLocal;
def background = ImageView {
image: bind windowControl.background
};
def content
=
bind windowControl.content;
init {
node
=
Group {
content: bind[background, content]
}
}
override
public
function intersects(localX: Number, localY: Number, localWidth: Number, localHeight: Number): Boolean {
return
bounds
.intersects(localX, localY, localWidth, localHeight);
}
override
public
function contains(localX: Number, localY: Number): Boolean {
if
(windowControl.modal) {
return
true
;
}
else
{
return
bounds
.contains(localX, localY);
}
}
}
点击图片可运行程序,非模态时背景可以监听到鼠标事件。
分享到:
相关推荐
要创建一个新的窗口,首先需要实例化一个`Stage`对象,然后设置其属性如标题、大小等,并加载一个`Scene`(场景)到这个舞台。`Scene`是由各种UI组件组成的,如按钮、文本框等。例如: ```java Stage primaryStage...
JavaFX 是一个用于创建桌面和移动应用程序的Java平台,它提供了丰富的用户界面工具和技术。...总的来说,`javafx-src.zip` 提供了一个深入了解JavaFX实现和扩展的窗口,对于JavaFX开发者来说极具价值。
Scenegraph中的每个节点都是一个图形对象,可以包含子节点,形成一个树状结构,这使得动态更新和动画化变得简单易行。 二、JavaFX组件 JavaFX 提供了一系列预定义的UI组件,如按钮(Button)、文本框(TextField)...
- **属性赋值**:对象间的属性可以直接赋值,例如,一个窗口的文本框内容可以赋值给另一个窗口的变量。 - **事件参数**:通过事件处理函数,可以将数据作为参数传递,如按钮点击事件携带特定信息。 - **模型-视图...
对话框通常在主应用程序窗口之外打开,提供一个独立的界面来执行特定任务或获取用户的输入信息。在本例中,“创建模态对话框--对话框”是一个关于如何在编程环境中构建模态对话框的教学实例。 模态对话框(Modal ...
在.NET框架中,WPF的`Window`类提供了`ShowDialog()`方法,调用此方法会显示一个模态窗口,直到用户关闭它,期间父窗口会被锁定。 在移动开发中,例如Android,可以使用`AlertDialog`或者自定义`DialogFragment`,...
7. **模态和非模态对话框**:JavaFX提供内置的对话框,如信息对话框、确认对话框,以及自定义的模态和非模态窗口。 在“Horrtus”这个项目中,开发者可能利用了JavaFX的这些特性来创建账单和报价的输入界面,如输入...
在C++的Qt中,可以使用信号和槽机制,如在父窗口类中定义一个信号,子窗口类中定义一个槽函数,然后连接这两个元素;在Java中,可以通过事件源和事件监听器共享状态;在Python的Tkinter中,可以使用回调函数或绑定...
这些函数允许在对话框创建时传递一个用户定义的指针,这个指针可以指向包含数据的结构,从而实现数据交换。 4. Qt框架下的模态对话框: 在Qt中,`QDialog`类提供了`exec()`方法来显示模态对话框。数据交换可以通过...
1. 非模态对话框:非模态对话框是一种允许用户同时与多个窗口进行交互的窗口类型。在非模态对话框中,用户可以继续操作主应用程序,而无需关闭或完成当前对话框。这提高了用户体验,因为用户可以按需处理多个任务,...
1. **JOptionPane**:这是Swing中的一个类,用于创建简单的对话框,如信息框、警告框、确认框、输入框等。例如,`JOptionPane.showMessageDialog()`函数可以显示一个带有信息的对话框。 2. **JDialog**:它是顶级...
GUI,即图形用户界面,是计算机操作系统中一种与用户交互的方式,通过图形元素如按钮、文本框、菜单等,提供直观、易用的操作环境。...同时,不断迭代和优化GUI设计,以提升用户体验,是Java GUI编程中的一个重要环节。
例如,以下是一个简单的C#示例,展示了如何添加关闭窗口前的提示: ```csharp private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("确定要退出吗?", "退出提示", ...
**GreenRouteApp** 是一个基于桌面的软件应用,它结合了**JavaFX** 和 **React式编程** 技术,提供了高效且用户友好的界面。这个项目可能是针对实习周的第二次评估,属于某个名为 DAM(可能代表软件开发或数据管理等...
在模态对话框打开期间,用户无法与对话框之外的任何其他窗口进行互动。在Windows操作系统中,可以通过`CreateDialogParam`或`ShowDialog`函数创建模态对话框。在Qt框架中,可以使用`QDialog`类,而在Java Swing中,...
通过使用JavaScript库(如jQuery)来增强页面的交云性,我们可以实现例如模态窗口、滑动菜单和图片画廊等功能。这些库通常包含大量预编写的代码,可以简化开发过程,并在各种浏览器中提供一致的用户体验。 最后,...
Java文本编辑器程序实现是一个涉及多方面编程技术的项目,主要涵盖了GUI(图形用户界面)设计、文件操作、事件处理和文本格式化等关键知识点。下面将详细解析这些概念及其在实现过程中的应用。 首先,GUI设计是创建...
14. **模态和非模态对话框**:在JavaFX中,Stage类可以创建模态和非模态对话框,模态对话框会阻止用户与父窗口进行交互,直到对话框关闭。 15. **JavaFX FXML**:FXML是一种XML格式,用于声明式地定义UI布局,与MVC...
JavaFX 8引入了JavaFX Scene Builder,一个可视化的布局工具,使得非程序员也能设计用户界面。 2. **Swing** Swing是Java早期的UI库,虽然现在JavaFX逐渐取代了它的地位,但Swing仍然广泛使用。Swing基于Java AWT...
JavaFX提供了一个叫javafx.embed.swing.JFXPanel的组件,允许在Swing应用中嵌入JavaFX内容。 9. **Swing工具与库**:Eclipse IDE和NetBeans IDE都提供了内置的GUI设计器,可以帮助开发者通过拖放方式快速创建界面。...