Jython 使用Swing GUI库
Jython的一个主要特性是其能够使用JDK中的Swing GUI库。标准Python发行版(通常称为CPython)附带了 Tkinter GUI库 。还可以使用其他GUI库,如 PyQt 和 WxPython ,但swing库提供了一个平台无关的GUI工具包。
在Jython中使用swing库比在Java中使用要简单得多。在Java中,匿名类必须用于创建事件绑定。在Jython中,我们可以简单地传递一个函数来实现相同的目的。
声明一个 JFrame类 的对象并将其visible属性设置为true可以创建基本的顶层窗口。为此,需要从swing包中导入JFrame类。
from javax.swing import JFrame
JFrame类有多个构造函数,参数个数不同。我们将使用其中一个构造函数,它接受一个字符串作为参数,并将其设置为标题。
frame = JFrame(“Hello”)
将frame的大小和位置属性设置为真之前,将frame的可见属性设置为true。将以下代码保存为frame.py。
from javax.swing import JFrame
frame = JFrame("Hello")
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setLocation(100,100)
frame.setSize(300,200)
frame.setVisible(True)
从命令提示符中运行上述脚本。它将显示以下输出,显示一个窗口。
swing GUI库是以 javax.swing 包的形式提供的。它的主要容器类 JFrame 和 JDialog 分别派生自Frame和Dialog类,这些类属于AWT库。其他的GUI控件,如 JLabel, JButton, JTextField 等,都是从JComponent类派生而来。
下面的示意图展示了Swing包的类层次结构。
下表总结了Swing库中不同的GUI控件类:
编号 | 类别与描述 |
---|---|
1 | JLabel 一个JLabel对象是一个将文本放置在容器中的组件。 |
2 | JButton 这个类创建一个带标签的按钮。 |
3 | JColorChooser JColorChooser提供了一个控制面板,方便用户操纵和选择颜色。 |
4 | JCheckBox 一个JCheckBox是一个图形组件,可以处于选中(true)或未选中(false)的状态。 |
5 | JRadioButton JRadioButton类是一个图形组件,可以处于选中(true)或未选中(false)的状态,并可以分组。 |
6 | JList JList组件向用户呈现一个可滚动的文本项列表。 |
7 | JComboBox JComboBox组件向用户呈现一个下拉列表。 |
8 | JTextField JTextField对象是一个允许编辑单行文本的文本组件。 |
9 | JPasswordField JPasswordField对象是一个专门用于输入密码的文本组件。 |
10 | JTextArea JTextArea对象是一个允许编辑多行文本的文本组件。 |
11 | ImageIcon 一个ImageIcon控件是实现Icon接口的,用于绘制来自图像的图标 |
12 | JScrollbar 滚动条控件表示滚动条组件,以便用户可以从一系列值中进行选择。 |
13 | JOptionPane JOptionPane提供了一组标准的对话框,提示用户输入一个值或者通知他们某事。 |
14 | JFileChooser JFileChooser控件表示一个对话框窗口,用户可以从中选择一个文件。 |
15 | JProgressBar 当任务向完成途中进展时,进度条显示任务的完成百分比。 |
16 | JSlider JSlider允许用户通过在有界区间内滑动一个旋钮来图形化选择一个值。 |
17 | JSpinner JSpinner是一个单行输入字段,允许用户从有序序列中选择一个数字或对象值。 |
我们在接下来的示例中将使用其中一些控件。