المشاركات

عرض الرسائل ذات التصنيف swing

Swing + DB + Spring

صورة
Aquí, un pequeño ejemplo sobre el uso de Spring DAO con Swing. https://java.net/projects/apuntes/downloads/download/Swing/DemoSwingDBApp.tar.gz Por si acaso usa Java 7, y Apache DB, con la base de datos "Sample". Espero que les sea de utilidad.

JComboBox de Objetos

صورة
Cuando se usa Swing, el problema más común es mostrar elementos en un JComboBox. Lo que "normalmente" hacen es agregar cadenas a los elementos del JCB (JComboBox), pero para obtener el elemento seleccionado, se obtendría solo el valor puestos. Algunos hasta colocan el ID del elemento a mostrar, y luego buscan el elemento seleccionado en la colección. Toda una jarana... pero ¿han notado que para obtener el elemento seleccionado se utiliza el método getSelectedItem() que devuelve un objeto? Si debería mostrar String, entonces, debería devolver un String, ¿cierto? En este post explicaremos como utilizar correctamente el JCB.

Swing: Componentes enlazados a un bean

صورة
La mejor manera de tener sincronizado un control swing con un javabean es utilizando enlaces (binding). La manera común y poco profesional es utilizar los set  y gets de cada atributo de un bean para asociar a cada componente. //... nombreTF.setValue(persona.getNombre()); edadTF.setValue(persona.getEdad()); //... etc y si son 80 campos, nadie querra hacerle mantenimiento. Aquí es donde entran los enlaces. Mostraremos un ejemplo con NetBeans para enlazar los componentes de un formulario con un JavaBean.

Empaquetar una aplicación para distribuir, desde NetBeans

صورة
Uno de los tantos motivos por lo que utilizo NetBeans en lugar de otro IDE, es que utiliza la Apache Ant para compilar, crear .jar .war .ear, javadoc, etc.. prácticamente para todo, y solo usando un archivo .xml. Y lo mejor es que se puede personalizar el .xml a nuestro antojo. En este post se va a explicar cómo empaquetar una aplicación Swing en un archivo .zip para ser distribuido a los usuarios finales.

Filtrar una tabla en JTable

Un alumno me pregunta cómo filtrar los datos de un JTable, siendo estos datos obtenidos de un query. La mejor manera no es manipular el JTable a través de su cantidad de columnas, agregando filas, borrando algunas de ellas, modificando las celdas, etc. Eso es realmente un dolor de cabeza. Recordemos que estamos trabajando en Java que es Orientado  a Objetos.. no en VisualBasic. Así que, si queremos manipular los datos de un JTable, debemos usar una clase que se encargue de manipular los datos, y que el jtable use esa clase. La interfaz TableModel es la indicada. Pero tiene demasiados métodos a implementar. Así que usaremos algo ya casi hecho. Se llama la clase abstracta AbstractTableModel . Simplemente, debemos heredarla: public class PersonasTableModel extends AbstractTableModel {.... Y con eso debemos implementar tres métodos: getRowCount() , getColumnCount() y getValueAt(int rowIndex, int columnIndex) . La clase que estamos creando debe tener un arreglo interno. Este arreglo es el

Guardar imágenes en base de datos usando JPA

Hay infinidad de ejemplos de cómo guardar una imagen a base de datos con JDBC, y cómo recuperarla. Pues esta vez mostraré un ejemplo usando JPA. Supongamos que nuestra clase entidad tiene una propiedad llamada imagen que es donde se guardará la imagen. Esta propiedad debe declararse así: @Lob @Column(name = "imagen") private byte[] imagen; Para guardar una imagen (supongamos una que esté en el disco), debemos realizar lo siguiente: Entidad i = new Entidad(); // nuestra entidad File f = new File("D:/Imagen006.jpg"); //asociamos el archivo fisico InputStream is = new FileInputStream(f); //lo abrimos. Lo importante es que sea un InputStream byte[] buffer = new byte[(int) f.length()]; //creamos el buffer int readers = is.read(buffer); //leemos el archivo al buffer i.setImagen(buffer); //lo guardamos en la entidad em.persist(i); //y lo colocamos en el EntityManager Ahora, para recuperar el contenido haremos que se muestre el contenido en un JFrame: Enti

Cambiar ícono a un JFrame

صورة
Un visitante de mi blog me pidió que le dijera cómo cambiar el ícono de los JFrame. Pero como este tip puede ser útil para toda la comunidad, decidí escribirlo aquí en mi blog. Paso 1 El ícono debe ser una imagen de extensión PNG. Esto se hace más fácil, ya que conseguir una figura y convertirlo en formato .ico es muy complicado. Los PNG nos ayudan bastante. Paso 2 La imagen que será el ícono debe estar dentro del paquete de fuentes, como si fuera una clase más. Si estuviera dentro de un paquete, sería mucho mejor. Paso 3 En el código del JFrame que vamos a poner el ícono, sobreescribimos el método  getIconImage()  conteniendo el siguiente código: (notar cómo se está llamando a la imagen .png) @Override public Image getIconImage() { Image retValue = Toolkit.getDefaultToolkit(). getImage(ClassLoader.getSystemResource("resources/icono.png")); return retValue; } Paso 4 En la vista de diseño del JFrame, lo seleccionamos y vamos sus propiedades, busca

Menu contextual (con clic "derecho")

Cuando se hace clic 'derecho', se muestra un menú con las opciones propias del objeto que se está seleccionando. Si se hace clic 'derecho' sobre un icono, se debería mostrar opciones propias que se debe trabajar con ese ícono. En Windows esto se llama 'Menú Contextual' o 'Menú del contexto'. El término clic 'derecho' no debería llamarse 'derecho'. En sistemas operativos en donde se ha cambiado la posición de los botones del ratón para zurdos, la funciones de los botones - obviamente - cambian. Los botones se les llamaría como "Botón principal & botón secundario" para referencirse al clic 'izquierdo' y clic 'derecho'. (Por ahí oí que le decían también "clic & anti-clic"..... no sabia que un botón podría inhibir o estar en contra de lo que haga el botón). Pues bien, aquí un ejemplito bien sencillo de cómo mostrar el menú contextual con Java Swing. package diesil.swing; import java.awt.event.Mou