🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# JRuby Swing 简介 > 原文: [http://zetcode.com/gui/jrubyswing/introduction/](http://zetcode.com/gui/jrubyswing/introduction/) 在 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](http://jruby.org) 网站下载发行版。 ```rb $ tar -xzvf jruby-bin-1.5.6.tar.gz $ mv jruby-1.5.6/ ~/bin ``` 安装 JRuby 非常容易。 我们提取压缩档案的内容,然后将目录移动到选定位置。 在我的系统上,我已将目录移到主目录的 bin 目录中。 ```rb $ ~/bin/jdk1.6.0_21/bin/java -jar ~/bin/jruby-1.5.6/lib/jruby.jar simple.rb ``` 我们已经在选定目录中安装了 JRuby。 在`lib`子目录中,我们将找到`jruby.jar`文件,该文件用于执行 JRuby 脚本。 ```rb $ 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`路径放入脚本。 ## 简单的例子 在第一个示例中,我们将在屏幕上显示一个基本窗口。 ```rb #!/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 ``` 尽管这段代码很小,但是应用窗口可以做很多事情。 可以调整大小,最大化,最小化。 随之而来的所有复杂性对应用员都是隐藏的。 ```rb include Java ``` 我们将 Java API 包含在 JRuby 中。 ```rb import javax.swing.JFrame ``` 我们导入一个`JFrame`类。 `JFrame`是带有标题栏和边框的顶层窗口。 ```rb self.initUI ``` 我们将用户界面的创建委托给`initUI`方法。 ```rb self.setSize 300, 200 ``` 我们设置窗口的大小。 ```rb self.setDefaultCloseOperation JFrame::EXIT_ON_CLOSE ``` 如果单击标题栏的关闭按钮,此方法可确保窗口终止。 默认情况下,没有任何反应。 ```rb self.setLocationRelativeTo nil ``` 我们将窗口置于屏幕中央。 ```rb self.setVisible true ``` 最后,窗口显示在屏幕上。 ## 工具提示 工具提示是一个小的矩形窗口,它提供有关对象的简短信息。 它通常是一个 GUI 组件。 它是应用帮助系统的一部分。 ```rb #!/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 ``` 在示例中,我们为框架和按钮设置工具提示。 ```rb panel = JPanel.new self.getContentPane.add panel ``` 我们创建一个`JPanel`组件。 它是一个通用的轻量级容器。 `JFrame`有一个区域,您可以在其中放置名为内容窗格的组件。 我们将面板放入此窗格。 ```rb panel.setLayout nil ``` 默认情况下,`JPanel`具有一个`FlowLayout`管理器。 布局管理器用于将小部件放置在容器上。 如果我们调用`setLayout nil`,则可以绝对定位组件。 为此,我们使用`setBounds`方法。 ```rb panel.setToolTipText "A Panel container" ``` 要启用工具提示,我们调用`setTooltipText`方法。 ![Tooltip](https://img.kancloud.cn/23/ab/23ab752ac391cf123ad120b0686c5742_300x200.jpg) 图:工具提示 ## 退出按钮 在本节的最后一个示例中,我们将创建一个退出按钮。 当我们按下此按钮时,应用终止。 ```rb #!/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`。 我们将向该按钮添加一个动作监听器。 ```rb qbutton = JButton.new "Quit" qbutton.setBounds 50, 60, 80, 30 ``` 在这里,我们创建一个按钮。 我们通过调用`setBounds`方法对其进行定位。 ```rb qbutton.add_action_listener do |e| System.exit 0 end ``` 我们向按钮添加一个动作监听器。 监听器终止应用。 ![Quit button](https://img.kancloud.cn/67/df/67df129f588206050ef9b1ac4b8c084d_300x200.jpg) 图:退出按钮 本节介绍了使用 JRuby 语言的 Swing 工具包。