Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - zonahurbana

#71
Java / Re: Cómo crear este tipo de tablas
8 Febrero 2014, 14:57 PM
Yo también estaba pensando en eso... pero, ¿cómo haría usted las divisiones?
No sé si está bien la idea de usar un GridLayout general y que cada celda ocupe un espacio en el GridLayout (así el primer componente es un JPanel vacío y Chile es el segundo JLabel agregado a ese GridLayout).

Y al llegar a las celdas con divisiones, usar otro GridLayout de (2, 2)...
Además no sé cómo hacer asignaciones a los espacios del GridLayout de manera no secuencial. Es decir, yo tendería a hacer un add para el primer valor, un add de un JPanel vacío, otro JPanel vacío y un add al otro valor.

Este es el código que he escrito para generar la tabla completa de momento:
       JDialog ventanaTabla = new JDialog(ventana, true);
       ventanaTabla.getContentPane().setLayout( new GridLayout(o+2, d+2) );
       ventanaTabla.getContentPane().add( new JPanel() );
       
       for(Paradero p : destinos)
           ventanaTabla.getContentPane().add( new JLabel(p.getNombre()));
       
       ventanaTabla.getContentPane().add( new JLabel("OFERTA") );
       
       for(int i=0; i<o; ++i) {
           ventanaTabla.getContentPane().add( new JLabel(origenes.get(i).getNombre()) );
           for(int j=0; j<d; ++j)
               ventanaTabla.getContentPane().add( matriz[i][j].getPanel() );
           ventanaTabla.getContentPane().add( new JLabel(""+origenes.get(i).getSaldo()) );
       }
           
       ventanaTabla.getContentPane().add( new JLabel("DEMANDA") );
       
       for(Paradero p : destinos)
           ventanaTabla.getContentPane().add( new JLabel(""+p.getSaldo()) );
       
       ventanaTabla.setLocationRelativeTo(ventana);
       ventanaTabla.setVisible(true);


Y este es el resultado:

Ya he conseguido darle cierta forma, pero sí que se ve bien mal.

La clase celda presenta 2 atributos, que son los valores que quiero usar (uno en el cuadro interno y otro fuera) y presenta un método GET que genera un JPanel y lo devuelve. En el JPanel se incluye un JLabel en la posición 0,0 y el otro JLabel en la posición 40,25.
   public JPanel getPanel() {
       JPanel panelCelda = new JPanel();
       panelCelda.setLayout( null );
       JLabel etiquetaCosto = new JLabel( String.valueOf(costo) );
       etiquetaCosto.setSize(40, 25);
       etiquetaCosto.setLocation(0, 0);
       panelCelda.add( etiquetaCosto );
       JLabel etiquetaSaldo = new JLabel( String.valueOf(saldo) );
       etiquetaSaldo.setSize(40, 25);
       etiquetaSaldo.setLocation(40, 25);      
       panelCelda.setSize(50, 80);
       panelCelda.setBorder( new LineBorder(Color.black, 2));
       return panelCelda;
   }


Muchas gracias por su ayuda. Espero me indique cómo lo haría usted porque tal vez estoy exagerando al usar un Layout de esa forma  :o
#72
Java / Cómo crear este tipo de tablas
8 Febrero 2014, 01:10 AM
Creo que es bastante extenso el código para usar títulos en columnas y filas, por eso estaba pensando en usar un GridLayout en vez de tablas.
Pero no estoy muy seguro de cómo hacer esas particiones. Como se observa en la imagen, cada celda presenta dos datos, sólo que el espacio no está igual de dividido.
#73
Muchas gracias por responder.

Antes estaba haciendo que la clase lectora implemente WindowListener, y tenía que sobreescribir todos los métodos abstractos. Si sólo sobreescribía windowClosing me daba error.
Veo que usted usa WindowAdapter, que es en sí una clase y no una interface, por lo que es posible sobreescribir sólo el evento deseado.

He probado a usar windowClosing sin poner el DO_NOTHING_ON_CLOSE y el JDialog muestra el mensaje pero al instante se cierra. Pero ahora, configurándolo, funciona perfectamente.

Gracias nuevamente.

PD: En un inicio no me funcionaba nada de nada, es decir, el evento windowClosing jamás se ejecutaba. Y la razón era que el addWindowListener estaba luego de hacer pack(); setVisible(true);
Lo mismo me pasó antes con el addActionListener de un botón. Es muy extraño.
#74
Por fin pude hacerlo. Gracias de todos modos.

Y tengo una pregunta adicional:
Quisiera que salte una advertencia cuando el usuario trata de cerrar la ventana secundaria (la que es de lectura) si es que no ha rellenado los campos.

¿Cómo puedo hacerlo?
Porque si uso windowClosing me parece que ejecutará código pero al final se cerrará.
#75
La verdad es que esperé estar aún en la universidad para comenzar a aprender.
El punto es que sabía que existían los lenguajes de programación y descargaba tutoriales pero nunca los veía.
Si tienes verdaderas intenciones de aprender desde ya, pues deberías empezar a hacerlo.
Yo estudié primero sobre C++ y ahora estoy viendo sobre Java. Al menos, a mi parecer, Java ha sido realmente fácil habiendo conocido antes C++.
He visto muchas recomendaciones sobre empezar usando Python, y la verdad es que no lo he usado aún, pero te recomendaría empezar a C++... con él no podrás hacer mucho al inicio, pero una vez que te hayas acostumbrado, los lenguajes que vengan te serán mucho más fáciles.
Al menos usando C++ yo he aprendido a hacer un esfuerzo involuntario por escribir la sintaxis correcta siempre a la primera, de tantos errores que tuve que corregir...
#76
Sí, sé cómo tomar los datos de los JTextField, pero no sé cómo enviar esos datos al JFrame principal.
Tengo una clase principal que extiende de JFrame, y desde ésta quiero leer datos usando otra ventana. Por lo tanto, muestro esa ventana y un botón, pero el botón no es capaz de devolver esos datos, ya que el evento es del tipo void.
No sé cómo hacer que se comuniquen las ventanas...
#77
Java / Sobre lectura de varios datos a la vez
7 Febrero 2014, 00:27 AM
El método showInputDialog de JOptionPane permite leer un único dato. Si son varios usualmente uso un bucle, pero quiero leer datos de a pares porque están relacionados. Y si se lee por separado, podría confundir al usuario.
Estaba creando una clase que herede JFrame y pregunte todas las preguntas que yo le indique, es decir, presente varios JLabel y JTextField según la cantidad de preguntas.
El punto es que, no sé cómo hacer para que devuelva los datos leídos luego de presionar un botón que incluí en el mismo JFrame hacia otro programa que también se está ejecutando y se encargó de crearlo :S
#78
Java / Re: Consulta sobre JTable
5 Febrero 2014, 05:03 AM
¿Así de largo es el código para poder usar títulos en columnas y filas?
¿O este trae consigo otras funcionalidades? Por ejemplo, la parte que indica "Sorter" tal vez sea para ordenar datos o algo así.

Gracias, voy a tratar de entenderlo.
#79
Java / Re: Crear proyecto Swing usando Netbeans
5 Febrero 2014, 04:58 AM
La verdad no sabría cómo hacerlo porque sólo veo las opciones Importar y Exportar, y no sé dónde encontrar la configuración por defecto.

Pero de momento, acabo de darme cuenta de que puedo crear un proyecto Java común y corriente y luego crear una clase dentro que sea del tipo "JFrame Form" y con ello sí que tengo acceso a la vista Design.

Muchas gracias por su ayuda.
#80
Java / Re: Crear proyecto Swing usando Netbeans
4 Febrero 2014, 18:49 PM
Sí, pero donde indica "Categories" no me aparece la carpeta "Swing GUI Forms", y si no me equivoco, esto ha pasado luego de importar una configuración de NetbeansThemes (fui a Tool->Options->Import y seleccione el nuevo estilo).

Acá una imagen: