JRuby Swing 简介
在 JRuby Swing 教程的这一部分中,我们将介绍 Swing 工具包并使用 JRuby 编程语言创建第一个程序。
本教程的目的是让您开始使用 JRuby 语言的 Swing 工具包。 可以在此处下载本教程中使用的图像。 我使用了 Gnome 项目的 Tango 图标包中的一些图标。
关于
Swing 库是 Java 编程语言的官方 Java GUI 工具箱。 它用于使用 Java 创建图形用户界面。 Swing 是一个高级 GUI 工具箱。 它具有丰富的组件集。 从基本的按钮,标签,滚动条到高级的组件(例如树和表格)。 Swing 本身是用 Java 编写的。 Swing 也可用于其他语言。 例如,JRuby,Jython,Groovy 或 Scala。
JRuby 是 Ruby 编程语言的 Java 实现。 JRuby 可以导入任何 Java 类。
执行本教程中的示例有两种基本方法。 一种方法是安装 Ruby NetBeans 插件。 它还包含 JRuby。 创建新的 Ruby 项目时,请确保选择 JRuby 平台。
另一种方法是从 jruby.org 网站下载发行版。
$ tar -xzvf jruby-bin-1.5.6.tar.gz
$ mv jruby-1.5.6/ ~/bin
安装 JRuby 非常容易。 我们提取压缩档案的内容,然后将目录移动到选定位置。 在我的系统上,我已将目录移到主目录的 bin 目录中。
$ ~/bin/jdk1.6.0_21/bin/java -jar ~/bin/jruby-1.5.6/lib/jruby.jar simple.rb
我们已经在选定目录中安装了 JRuby。 在lib
子目录中,我们将找到jruby.jar
文件,该文件用于执行 JRuby 脚本。
$ cat /usr/local/bin/jruby
#!/bin/bash
~/bin/jdk1.6.0_21/bin/java -jar ~/bin/jruby-1.5.6/lib/jruby.jar $1
(可选)我们可以创建一个 bash 文件,该文件将自动启动我们的 JRuby 脚本。 然后,我们可以将#!/usr/local/bin/jruby
路径放入脚本。
简单的例子
在第一个示例中,我们将在屏幕上显示一个基本窗口。
#!/usr/local/bin/jruby
# ZetCode JRuby Swing tutorial
#
# This example shows a simple
# window in the center of the screen.
#
# author: Jan Bodnar
# website: www.zetcode.com
# last modified: December 2010
include Java
import javax.swing.JFrame
class Example < JFrame
def initialize
super "Simple"
self.initUI
end
def initUI
self.setSize 300, 200
self.setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
self.setLocationRelativeTo nil
self.setVisible true
end
end
Example.new
尽管这段代码很小,但是应用窗口可以做很多事情。 可以调整大小,最大化,最小化。 随之而来的所有复杂性对应用员都是隐藏的。
include Java
我们将 Java API 包含在 JRuby 中。
import javax.swing.JFrame
我们导入一个JFrame
类。 JFrame
是带有标题栏和边框的顶层窗口。
self.initUI
我们将用户界面的创建委托给initUI
方法。
self.setSize 300, 200
我们设置窗口的大小。
self.setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
如果单击标题栏的关闭按钮,此方法可确保窗口终止。 默认情况下,没有任何反应。
self.setLocationRelativeTo nil
我们将窗口置于屏幕中央。
self.setVisible true
最后,窗口显示在屏幕上。
工具提示
工具提示是一个小的矩形窗口,它提供有关对象的简短信息。 它通常是一个 GUI 组件。 它是应用帮助系统的一部分。
#!/usr/local/bin/jruby
# ZetCode JRuby Swing tutorial
#
# This code shows a tooltip on
# a window and a button
#
# author: Jan Bodnar
# website: www.zetcode.com
# last modified: December 2010
include Java
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JPanel
class Example < JFrame
def initialize
super "Tooltips"
self.initUI
end
def initUI
panel = JPanel.new
self.getContentPane.add panel
panel.setLayout nil
panel.setToolTipText "A Panel container"
button = JButton.new "Button"
button.setBounds 100, 60, 100, 30
button.setToolTipText "A button component"
panel.add button
self.setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
self.setSize 300, 200
self.setLocationRelativeTo nil
self.setVisible true
end
end
Example.new
在示例中,我们为框架和按钮设置工具提示。
panel = JPanel.new
self.getContentPane.add panel
我们创建一个JPanel
组件。 它是一个通用的轻量级容器。 JFrame
有一个区域,您可以在其中放置名为内容窗格的组件。 我们将面板放入此窗格。
panel.setLayout nil
默认情况下,JPanel
具有一个FlowLayout
管理器。 布局管理器用于将小部件放置在容器上。 如果我们调用setLayout nil
,则可以绝对定位组件。 为此,我们使用setBounds
方法。
panel.setToolTipText "A Panel container"
要启用工具提示,我们调用setTooltipText
方法。
图:工具提示
退出按钮
在本节的最后一个示例中,我们将创建一个退出按钮。 当我们按下此按钮时,应用终止。
#!/usr/local/bin/jruby
# ZetCode JRuby Swing tutorial
#
# This program creates a quit
# button. When we press the button,
# the application terminates.
#
# author: Jan Bodnar
# website: www.zetcode.com
# last modified: December 2010
include Java
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JPanel
import java.lang.System
class Example < JFrame
def initialize
super "Quit button"
self.initUI
end
def initUI
panel = JPanel.new
self.getContentPane.add panel
panel.setLayout nil
qbutton = JButton.new "Quit"
qbutton.setBounds 50, 60, 80, 30
qbutton.add_action_listener do |e|
System.exit 0
end
panel.add qbutton
self.setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
self.setSize 300, 200
self.setLocationRelativeTo nil
self.setVisible true
end
end
Example.new
我们在窗口上放置一个JButton
。 我们将向该按钮添加一个动作监听器。
qbutton = JButton.new "Quit"
qbutton.setBounds 50, 60, 80, 30
在这里,我们创建一个按钮。 我们通过调用setBounds
方法对其进行定位。
qbutton.add_action_listener do |e|
System.exit 0
end
我们向按钮添加一个动作监听器。 监听器终止应用。
图:退出按钮
本节介绍了使用 JRuby 语言的 Swing 工具包。