JavaFX之对话框的创建

原创 2013年12月05日 16:45:50

  声明:   本博客文章原创类别的均为个人原创,版权所有。转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com


  在JavaFX的官方API中,是没有对话框相关的类。所以我们在需要使用对话框的时候,可以使用Swing的库。但是由于风格相差较大,更多的时候我们需要用JavaFX来创建对话框。

  下面我们来看看怎么用JavaFX来创建一个对话框吧。


  JavaFX用于创建对话框的类是Stage,没错。JavaFX程序的起始界面也是一个Stage。

  我们先用JavaFX Scene Builder来创建一个布局文件。

  

  如图所示,是一个简单的提示框布局,命名为AlertDialog.fxml。

  然后修改XML文件如下图所示:

  

  

  根部用fx:root标签,然后指定根部的类型为javafx.scene.layout.AnchorPane,注意,这里要跟后面代码里相对应。然后把之前的布局文件用<children>标签包含起来。


  下面是我们事件代码:

  

import java.io.IOException;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TitledPane;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

/**
 *
 * @author Wing
 */
public class WiAlertDialog  extends AnchorPane{
    @FXML
    Label alertMessage;
    @FXML
    TitledPane alertTitledPane;
    
    private static WiAlertDialog wiAlertDialog;
    private static Stage  newAlertDialog ;
    
    private  WiAlertDialog(String message) {
        FXMLLoader fXMLLoader = new FXMLLoader(getClass().getResource("AlertDialog.fxml"));
        fXMLLoader.setRoot(WiAlertDialog.this);
        fXMLLoader.setController(WiAlertDialog.this);
        try {
            fXMLLoader.load();
        } catch (IOException exception) {
            throw new RuntimeException(exception);
        }
        alertTitledPane.setFocusTraversable(false);
        alertMessage.setText(message);
    }
    
    public static void showAlertDialog(String message) {
        newAlertDialog = new Stage(StageStyle.TRANSPARENT);
        newAlertDialog.setResizable(false);
        wiAlertDialog = new WiAlertDialog(message);
        newAlertDialog.setScene(new Scene(wiAlertDialog));
        newAlertDialog.show();
    }
    
    public static void hideAlertDialog() {
        if(newAlertDialog != null) {
            newAlertDialog.hide();
        }
    }

    @FXML
    private void onAlertOKClick(ActionEvent event) {
         WiAlertDialog.hideAlertDialog();
    }
}

  我们先用FXMLLoader来载入FXML文件,然后设置根元素为当前,也就是AnchorPane。接着设置Controller为当前,也就是在FXML中指定的事件,我们可以在这里实现(例如后面的onAlertOKClick事件)。


  然后我们用一个静态的showAlertDialog来显示对话框。

  在showAlertDialog中,我们创建一个Stage,和一个包含当前界面的Scene。通过Stage.show来显示对话框,然后点击"确定"按钮后,执行onAlertOKClick来将Stage关闭。


  下面我们来看看效果:

  

  

  

  上下两个对话框均是这样实现的。

  大家可以在JavaFX开发中尝试一下。


 本博客文章原创类别的均为个人原创,版权所有。转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com

-----------------------------------------------------------------------------------

  有1,2个月没有写博客了。其实项目的事情并不算多,主要是Unity3D项目,美工的制作时间比较长。所以捣鼓了一段时间的JavaFX开发。在做一个多线程下载断点续传的下载工具。只当是熟悉一下。不过也觉得没得意思了,还是想从事游戏开发相关的内容。这个部分写几篇博客,可能又去继续玩Cocos2d-x了吧。

-----------------------------------------------------------------------------------

JavaFX:对话框 Alert

JavaFX:对话框 Alert avaFX 8中的 java.scene.conrtol.Alert类可以用于显示对话框,大致上有4种常用的类型:Information,Comfira...
  • Al_assad
  • Al_assad
  • 2017年01月22日 01:38
  • 4604

JavaFX Dialog实现(JDK8)

JavaFX 8u40 finally includes simple Dialogs and Alerts! I've been waiting for this since 2012! In th...
  • u010889616
  • u010889616
  • 2016年11月06日 22:05
  • 4592

JavaFX

chapter 2   JavaFX 基础         javafx 是一个用来专门创建图形用户界面的工具包,因此他只包含了控件的集合。这章简短的介绍各种组件、API和JavaFX工具,在后面...
  • linshichen
  • linshichen
  • 2016年06月03日 11:05
  • 3670

利用JavaFx开发RIA桌面应用-Stage窗口关闭监听,并弹出确认提示框

JavaFx Stage窗口关闭监听,并弹出确认提示框
  • loongshawn
  • loongshawn
  • 2016年12月19日 12:07
  • 4073

javafx弹出窗口

import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHan...
  • sweetStreet
  • sweetStreet
  • 2016年08月10日 08:57
  • 5459

JavaFx 简易弹出提示框

调用也很简单,直接调用几个静态的show方法就可以了 package com.sbt.jfxcomponents; import javafx.event.ActionEvent; import ...
  • u012892687
  • u012892687
  • 2015年04月08日 21:03
  • 5926

JavaFX 8 教程 (中文)

 http://code.makery.ch/library/javafx-8-tutorial/zh-cn/ 早在 2012 我和我的学生们写了一个非常详细的 JavaFX 2 系列教程...
  • caolaosanahnu
  • caolaosanahnu
  • 2015年03月04日 17:06
  • 8365

JavaFX Dialog实现(JDK8提示框)原链接:http://blog.csdn.net/u010889616/article/details/53057047

原网址:http://blog.csdn.net/u010889616/article/details/53057047
  • u013760453
  • u013760453
  • 2018年01月05日 14:03
  • 37

JavaFX如何实现模态窗口

JavaSE中,使用JOptionPane.show***window可以生产模态的对话框窗口,即用户必须点击对话框的按钮后,才能返回主窗口继续操作,否则无法进行其他操作。但是JavaFX 中没有提供...
  • jackie_bryant
  • jackie_bryant
  • 2017年01月11日 01:09
  • 877

JavaFx自定义窗体

使用javafx创建窗体的时候会默认的使用系统的的最大最小化关闭的窗体,但是默认的窗体的风格有时不满足需求,需要自定义的窗体来满足我们的需求...
  • u014254283
  • u014254283
  • 2015年06月23日 22:18
  • 2556
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaFX之对话框的创建
举报原因:
原因补充:

(最多只允许输入30个字)