PDA

View Full Version : [java] problemi con JTable


ndakota
22-04-2008, 14:25
ciao ragazzi, ho un problema con la JTable. il codice è questo:


package classes;
import java.awt.*;
import javax.swing.*;

public class Gui extends JFrame {

private JPanel panel = new JPanel();

private JMenuBar menuBar = new JMenuBar();

private JMenu file = new JMenu("file");
private JMenu modify = new JMenu("modify");
private JMenu search = new JMenu("search");

private JMenuItem open = new JMenuItem("open");
private JMenuItem save = new JMenuItem("save");
private JMenuItem close = new JMenuItem("close");
private JMenuItem exit = new JMenuItem("exit");
private JMenuItem insert = new JMenuItem("insert");
private JMenuItem order = new JMenuItem("order");
private JMenuItem delete = new JMenuItem("delete");
private JMenuItem research = new JMenuItem("research");
private JMenuItem show = new JMenuItem("show");

private String[] titles = { "name", "number" };
private String[][] datas = { {"pippo", "347"}, {"pluto", "333"} };
private JTable table = new JTable(titles, datas);
private JScrollPane scroll = new JScrollPane(table);

public Gui() {

this.setTitle("Phone Book");
this.setBounds(100, 100, 600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

file.add(open);
file.add(save);
file.add(close);
file.addSeparator();
file.add(exit);
modify.add(insert);
modify.add(order);
modify.add(delete);
search.add(research);
search.add(show);

menuBar.add(file);
menuBar.add(modify);
menuBar.add(search);

panel.add(table);
panel.add(scroll);

this.setJMenuBar(menuBar);
this.setVisible(true);
this.setResizable(false);
this.setContentPane(panel);
this.setLayout(null);
}
}


l'errore me lo da sulla riga in grassetto, all'invocazione del costruttore. non ho molto materiale in merito ma per inizializzare una JTable ho visto che gli viene passato un array di string per le intestazioni e una matrice di string per i dati eppure.. qualcuno che usa le JTable mi sa dire dove sbaglio? grazie. :)

vladix
22-04-2008, 15:20
prova con
private JTable table = new JTable();
table.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] { {"pippo", "347"}, {"pluto", "333"} } ,
new String [] {"name", "number"}
));

ndakota
23-04-2008, 14:05
niente cazzarola.. altri? oppure.. cosa usare al posto delle JTable?

banryu79
24-04-2008, 09:06
private String[] titles = { "name", "number" };
private String[][] datas = { {"pippo", "347"}, {"pluto", "333"} };
private JTable table = new JTable(titles, datas);


E' errato l'ordine con cui passi gli argomenti al costruttore.

Il costruttore di JTable che stai cercando di utilizzare è questo:

public JTable(Object[][] rowData,
Object[] columnNames)

Constructs a JTable to display the values in the two dimensional array, rowData, with column names, columnNames. rowData is an array of rows, so the value of the cell at row 1, column 5 can be obtained with the following code:

rowData[1][5];

All rows must be of the same length as columnNames.

Parameters:
rowData - the data for the new table
columnNames - names of each column


Come vedi devi solo invertire l'ordine dei due parametri.

Nota che l'errore in output di compilazione ti ha indicato la riga di chiamata al costruttore di JTable: a quel punto, per scoprire come risolvere, ti sarebbe bastato consultare i Javadoc delle API ;)

ndakota
24-04-2008, 16:55
grazie ora funziona :)