Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 596

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 596

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 613

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 707

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 707

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 707

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 707

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/citiz68/public_html/javafxblogs/wp-includes/classes.php on line 730
JavaFX的菜单Menu

JavaFX的菜单Menu

发表于: 2009年07月28日 类别:JAVAFX技术
标签: , , ,

在JavaFX的API中没有提供菜单(menu)的控件。可能是由于JavaFX设计者们觉得在RIA有没有菜单不重要。但实际中,开发人员还是常常询问如何在JavaFX实现菜单功能,于是Henry决定写个JavaFX菜单的例子(更多的例子可以参考 JavaFX编程博客 http://www.javafxblogs.com)。
JavaFX最然没有直接提供Menu的功能(注:javafxblogs.com),但是提供了一个SWING组件的封装类javafx.ext.swing.SwingComponent 。这个类可以把SWING的组件转化成JavaFX的节点(node)。
javafx blog
javafx blog

在上述代码中,我们先用构建一套标准的SWING菜单条(menu bar,JavaFX教程 http://www.javafxblogs.com),每个菜单条包含2个菜单项。这些都是标准Java SE中的功能,就不多解释了。接下来我们用以下语句来创建一个SwingComponent实例, 把SWING的菜单条包容进去:

var fxMenuBar : SwingComponent = SwingComponent.wrap(menuBar);

下面3行代码是把菜单条定位在窗口的上方:

fxMenuBar.width = w;
fxMenuBar.layoutX=0;
fxMenuBar.layoutY=0;

在Stage类中,我们可以看到fxMenuBar就像不同的JavaFX节点一样使用。由于窗口式可以调整大小的,因此我们需要一些代码来保证菜单条和窗口等宽。为了实现这点,我们增加了一个trigger,把窗口宽度的变化反映到菜单条中,变量w的trigger如下:

var w : Number = 480 on replace { fxMenuBar.width = w ; };

实际的绑定是通过这句类完成的,注意这里的双向绑定的用法:

Stage {
 ...
    width: bind w with inverse
 ...
}

下面是程序的截图,支持快捷键Alt+1,2,3,4来激活菜单项目:

相关文章:

SWING中如何使用JavaFX的组件

纯Java代码调用JavaFX的功能

NASCAR Die-cast

Free Online Canada Citizenship Practice Exam Questions on citizenship appliation

2个评论

  1. [...] 在JavaFX中的菜单 Swing应用中使用JavaFX的功能 用纯Java代码调用JavaFX的功能 [...]

    Pingback 来自 JavaFX多用户在线应用实例:许愿树联机版 — 2009年08月18日 @ 1:00 am

  2. 不错~~~ javafx 有 tbable 和 tree吗??

    Beyond:

    没有。所以需要转换。

    评论 来自 beyond — 2009年09月25日 @ 1:06 am

本贴评论的RSS feed