Jython: uso de la biblioteca GUI de Swing
Una de las principales características de Jython es su capacidad para utilizar la biblioteca Swing GUI en JDK. La distribución estándar de Python (a menudo denominada CPython) tiene laTkinter GUI libraryenviado con él. Otras bibliotecas GUI comoPyQt y WxPython también están disponibles para usar con él, pero la biblioteca swing ofrece un juego de herramientas GUI independiente de la plataforma.
Usar la biblioteca swing en Jython es mucho más fácil en comparación con usarla en Java. En Java, las clases anónimas deben usarse para crear un enlace de eventos. En Jython, simplemente podemos pasar una función con el mismo propósito.
La ventana básica de nivel superior se crea declarando un objeto del JFrame classy establezca su propiedad visible en true. Para eso, la clase Jframe debe importarse del paquete swing.
from javax.swing import JFrame
La clase JFrame tiene varios constructores con un número variable de argumentos. Usaremos el uno, que toma una cadena como argumento y la establece como título.
frame = JFrame(“Hello”)
Establezca las propiedades de ubicación y tamaño del marco antes de establecer su propiedad visible en verdadero. Almacene el siguiente código comoframe.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)
Ejecute el script anterior desde el símbolo del sistema. Mostrará la siguiente salida mostrando una ventana.
La biblioteca de GUI swing se proporciona en forma de javax.swingpaquete en Java. Sus principales clases de contenedores,JFrame y JDialogse derivan respectivamente de las clases Frame y Dialog, que se encuentran en la biblioteca AWT. Otros controles GUI comoJLabel, JButton, JTextField, etc., se derivan de la clase JComponent.
La siguiente ilustración muestra la jerarquía de clases de paquetes Swing.
La siguiente tabla resume las diferentes clases de control de GUI en una biblioteca swing:
No Señor. | Clase y descripción |
---|---|
1 | JLabel Un objeto JLabel es un componente para colocar texto en un contenedor. |
2 | JButton Esta clase crea un botón etiquetado. |
3 | JColorChooser Un JColorChooser proporciona un panel de controles diseñado para permitir al usuario manipular y seleccionar un color. |
4 | JCheckBox Un JCheckBox es un componente gráfico que puede estar en un on (verdad o off (falso) estado. |
5 | JRadioButton La clase JRadioButton es un componente gráfico que puede estar en estado activado (verdadero) o desactivado (falso). en un grupo. |
6 | JList Un componente JList presenta al usuario una lista de elementos de texto que se desplaza. |
7 | JComboBox Un componente JComboBox presenta al usuario una lista desplegable de elementos |
8 | JTextField Un objeto JTextField es un componente de texto que permite la edición de una sola línea de texto. |
9 | JPasswordField Un objeto JPasswordField es un componente de texto especializado para la entrada de contraseñas. |
10 | JTextArea Un objeto JTextArea es un componente de texto que permite editar varias líneas de texto. |
11 | ImageIcon Un control ImageIcon es una implementación de la interfaz de iconos que pinta iconos de imágenes |
12 | JScrollbar Un control de barra de desplazamiento representa un componente de la barra de desplazamiento para permitir al usuario seleccionar entre un rango de valores. |
13 | JOptionPane JOptionPane proporciona un conjunto de cuadros de diálogo estándar que solicitan a los usuarios un valor o les informa algo. |
14 | JFileChooser Un control JFileChooser representa una ventana de diálogo desde la que el usuario puede seleccionar un archivo. |
15 | JProgressBar A medida que la tarea avanza hacia su finalización, la barra de progreso muestra el porcentaje de finalización de la tarea. |
dieciséis | JSlider Un JSlider permite al usuario seleccionar gráficamente un valor deslizando una perilla dentro de un intervalo limitado. |
17 | JSpinner Un JSpinner es un campo de entrada de una sola línea que permite al usuario seleccionar un número o un valor de objeto de una secuencia ordenada. |
Estaríamos usando algunos de estos controles en ejemplos posteriores.