`
chenweionline
  • 浏览: 22115 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JavaFX实现一个简单的模态窗口

阅读更多

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);
            }
    }
}




点击图片可运行程序,非模态时背景可以监听到鼠标事件。

分享到:
评论

相关推荐

    javafx显示多个窗口以及javafx多窗口之间数据交互传输项目原文件

    要创建一个新的窗口,首先需要实例化一个`Stage`对象,然后设置其属性如标题、大小等,并加载一个`Scene`(场景)到这个舞台。`Scene`是由各种UI组件组成的,如按钮、文本框等。例如: ```java Stage primaryStage...

    javafx-src.zip

    JavaFX 是一个用于创建桌面和移动应用程序的Java平台,它提供了丰富的用户界面工具和技术。...总的来说,`javafx-src.zip` 提供了一个深入了解JavaFX实现和扩展的窗口,对于JavaFX开发者来说极具价值。

    javaFX 学习资料

    Scenegraph中的每个节点都是一个图形对象,可以包含子节点,形成一个树状结构,这使得动态更新和动画化变得简单易行。 二、JavaFX组件 JavaFX 提供了一系列预定义的UI组件,如按钮(Button)、文本框(TextField)...

    案例一 GUI数据传递和多窗口编程.zip

    - **属性赋值**:对象间的属性可以直接赋值,例如,一个窗口的文本框内容可以赋值给另一个窗口的变量。 - **事件参数**:通过事件处理函数,可以将数据作为参数传递,如按钮点击事件携带特定信息。 - **模型-视图...

    创建模态对话框--对话框

    对话框通常在主应用程序窗口之外打开,提供一个独立的界面来执行特定任务或获取用户的输入信息。在本例中,“创建模态对话框--对话框”是一个关于如何在编程环境中构建模态对话框的教学实例。 模态对话框(Modal ...

    弹出pupup画面后,锁住父画面

    在.NET框架中,WPF的`Window`类提供了`ShowDialog()`方法,调用此方法会显示一个模态窗口,直到用户关闭它,期间父窗口会被锁定。 在移动开发中,例如Android,可以使用`AlertDialog`或者自定义`DialogFragment`,...

    Horrtus:一款 JavaFX 账单计算软件

    7. **模态和非模态对话框**:JavaFX提供内置的对话框,如信息对话框、确认对话框,以及自定义的模态和非模态窗口。 在“Horrtus”这个项目中,开发者可能利用了JavaFX的这些特性来创建账单和报价的输入界面,如输入...

    在固定位置创建子窗口,点击父窗口自动隐藏子窗口

    在C++的Qt中,可以使用信号和槽机制,如在父窗口类中定义一个信号,子窗口类中定义一个槽函数,然后连接这两个元素;在Java中,可以通过事件源和事件监听器共享状态;在Python的Tkinter中,可以使用回调函数或绑定...

    模态对话框与应用程序之间的数据交换

    这些函数允许在对话框创建时传递一个用户定义的指针,这个指针可以指向包含数据的结构,从而实现数据交换。 4. Qt框架下的模态对话框: 在Qt中,`QDialog`类提供了`exec()`方法来显示模态对话框。数据交换可以通过...

    非模态+打开我的电脑+对话框扩展.rar

    1. 非模态对话框:非模态对话框是一种允许用户同时与多个窗口进行交互的窗口类型。在非模态对话框中,用户可以继续操作主应用程序,而无需关闭或完成当前对话框。这提高了用户体验,因为用户可以按需处理多个任务,...

    java弹出窗口大全

    1. **JOptionPane**:这是Swing中的一个类,用于创建简单的对话框,如信息框、警告框、确认框、输入框等。例如,`JOptionPane.showMessageDialog()`函数可以显示一个带有信息的对话框。 2. **JDialog**:它是顶级...

    GUI包括JAVA程序实现编程

    GUI,即图形用户界面,是计算机操作系统中一种与用户交互的方式,通过图形元素如按钮、文本框、菜单等,提供直观、易用的操作环境。...同时,不断迭代和优化GUI设计,以提升用户体验,是Java GUI编程中的一个重要环节。

    (实例027)关闭窗口前提示.rar

    例如,以下是一个简单的C#示例,展示了如何添加关闭窗口前的提示: ```csharp private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("确定要退出吗?", "退出提示", ...

    GreenRouteApp:具有JavaFX和React式编程的桌面应用程序

    **GreenRouteApp** 是一个基于桌面的软件应用,它结合了**JavaFX** 和 **React式编程** 技术,提供了高效且用户友好的界面。这个项目可能是针对实习周的第二次评估,属于某个名为 DAM(可能代表软件开发或数据管理等...

    对话框的几种实现方式

    在模态对话框打开期间,用户无法与对话框之外的任何其他窗口进行互动。在Windows操作系统中,可以通过`CreateDialogParam`或`ShowDialog`函数创建模态对话框。在Qt框架中,可以使用`QDialog`类,而在Java Swing中,...

    如何用html5 和css3创建兼容就浏览器的作品集

    通过使用JavaScript库(如jQuery)来增强页面的交云性,我们可以实现例如模态窗口、滑动菜单和图片画廊等功能。这些库通常包含大量预编写的代码,可以简化开发过程,并在各种浏览器中提供一致的用户体验。 最后,...

    java文本编辑器程序实现

    Java文本编辑器程序实现是一个涉及多方面编程技术的项目,主要涵盖了GUI(图形用户界面)设计、文件操作、事件处理和文本格式化等关键知识点。下面将详细解析这些概念及其在实现过程中的应用。 首先,GUI设计是创建...

    基于Java语言的控制窗口.zip

    14. **模态和非模态对话框**:在JavaFX中,Stage类可以创建模态和非模态对话框,模态对话框会阻止用户与父窗口进行交互,直到对话框关闭。 15. **JavaFX FXML**:FXML是一种XML格式,用于声明式地定义UI布局,与MVC...

    Java 用户界面编程指南

    JavaFX 8引入了JavaFX Scene Builder,一个可视化的布局工具,使得非程序员也能设计用户界面。 2. **Swing** Swing是Java早期的UI库,虽然现在JavaFX逐渐取代了它的地位,但Swing仍然广泛使用。Swing基于Java AWT...

    JAVA GUI界面设计教程

    JavaFX提供了一个叫javafx.embed.swing.JFXPanel的组件,允许在Swing应用中嵌入JavaFX内容。 9. **Swing工具与库**:Eclipse IDE和NetBeans IDE都提供了内置的GUI设计器,可以帮助开发者通过拖放方式快速创建界面。...

Global site tag (gtag.js) - Google Analytics