Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Java Jtable Vector

36 views
Skip to first unread message

AlejandroArias

unread,
Nov 16, 2007, 4:45:29 PM11/16/07
to
Saludos tengo un vector asi:

Vector ListadoCD = new Vector();

ListadoCD.addElement(new CD("R1", "50 Cent", "Rap", "20000"));
ListadoCD.addElement(new CD("P2", "Ricardo Arjona", "Pop",
"35000"));
ListadoCD.addElement(new CD("D3", "Antoine Clamaran","Dance",
"30000"));
ListadoCD.addElement(new CD("S5", "Victor Manuelle","Salsa",
"23000"));


ESto es loq sifnifica los datos

lblCodigoCD = new JLabel("Codigo");
lblArtista = new JLabel("Artista");
lblGenero = new JLabel("Genero");
lblPrecio = new JLabel("Precio");


NEcesito mostrarlo en un JTable

DefaultTableModel modelo = new DefaultTableModel();

JTable Tabla = new JTable(modelo);
BorderLayout borderLayout1 = new BorderLayout();

final JTable table = new JTable(ListadoCD, titulos);
table.setPreferredScrollableViewportSize(new
Dimension(500, 70));

Pero me dice que el tipo de ListadoCD no es strig, que debo hacer para
solucionar esto?

Ricardo Palomares Martinez

unread,
Nov 18, 2007, 2:36:54 PM11/18/07
to
AlejandroArias escribió:


Diría que leer la documentación puede ser un primer paso:

http://java.sun.com/javase/6/docs/api/javax/swing/JTable.html
http://java.sun.com/docs/books/tutorial/uiswing/index.html

Estás creando un Vector, luego un TableModel, luego un JTable (Tabla),
y luego otro JTable que usa ListadoCD como datos de un
DefaultTableModel. Los títulos de las columnas nos los muestras como
JLabels, y no veo por ningún lado qué es "titulos".

No nos enseñas todo el código relevante, pero si tiene la misma
organización que el que has puesto, es que puede haber de todo ahí. Si
quieres crear una tabla con una serie de datos fijos como los que
propones, debería bastar con algo así:

String[] columnNames = {"Código", "Artista", "Género", "Precio"};

Object[][] data = {
{"R1", "50 Cent", "Rap", new Integer(20000)},
{"P2", "Ricardo Arjona", "Pop", new Integer(35000),
(...)
};

JTable table = new JTable(data, columnNames);

Vector es una clase "thread-safe", lo que la hace ser bastante lenta.
Deberías acostumbrarte a usarla sólo cuando sea imprescindible.

Saludos.

--
If it's true that we are here to help others,
then what exactly are the OTHERS here for?

AlejandroArias

unread,
Nov 19, 2007, 9:57:10 AM11/19/07
to
Hola Ricardo, gracias por tu respuesta, bueno realmente apenas estoy
aprendiendo java, el fin de semana estuve mirando y encontre una
solucion, aunqe no la mas ortodoxa pero bueno,

basicamente lo que hago es convertir ese vector de objetos que tengo
en vector de strings, o eso es lo que creo entiendo lo que hace el
ciclo, y ahi si puedo muestrar el vector de strings en el JTable.

btnListar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){

Vector vectorDatos = new Vector();
for(int i = 0; i < ListadoCD.size(); i++){
Vector vectorAux = new Vector();

vectorAux.add((((CD)ListadoCD.elementAt(i)).getCodigo()));

vectorAux.add((((CD)ListadoCD.elementAt(i)).getArtista()));

vectorAux.add((((CD)ListadoCD.elementAt(i)).getGenero()));

vectorAux.add((((CD)ListadoCD.elementAt(i)).getPrecio()));
vectorDatos.add(vectorAux);
}

Vector vectorCabecera = new Vector();
vectorCabecera.add("Codigo CD");
vectorCabecera.add("Artista");
vectorCabecera.add("Genero");
vectorCabecera.add("Precio");

JFrame ventana = new JFrame();
JTable tabla = new JTable(vectorDatos,
vectorCabecera);

tabla.setPreferredScrollableViewportSize(new
Dimension(380, 70));

tabla.setEnabled(false);
tabla.setShowHorizontalLines( false );
tabla.setForeground(Color.blue);
tabla.setBackground(Color.pink);

JScrollPane jScrollPane = new JScrollPane();
jScrollPane.setViewportView(tabla);

ventana.getContentPane().add(jScrollPane);
ventana.setTitle("Listado de CD's (Tamaño Vector
Actual["+ ListadoCD.size() +"])");

//Iniciar la ventana aproximadamente en el centro de
la pantalla.
Dimension screenSize =
Toolkit.getDefaultToolkit().getScreenSize();
ventana.setLocation(screenSize.width/3 ,
screenSize.height/2);

ventana.pack();
ventana.setVisible(true);

}
});

0 new messages