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:
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.
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
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:
Código [Seleccionar]
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.
Código [Seleccionar]
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