JTable,Tbalemodel

2 respostas
E

Bom dia a todos.
Estou com um problema que minha Jtable não mostra o resultado da minha consulta

public class FrmActividade extends JInternalFrameBDI {

	private static final long serialVersionUID = -7406683865337697864L;
	private JScrollPane scrollPane = null;
	private JTable jTable = null;
	private String[] nomeColunas = { "VERSION", "STATUS", "ALIMENTADOR",
			"NOMEPROPRIEDADE", "NOMEPROPRIETARIO", "MUNICIPIOPROPRIEDADE",
			"RGPROPRIETARIO", "LOCAL", "CPFPROPRIETARIO",
			"ENDERECOPROPRIEDADE", "ENDERECOPROPRIETARIO",
			"TELEFONEPROPRIETARIO" };

	public FrmActividade() {
		super("Atividades Registradas", false, true, false);
		ControlVentanas ventanas = ControlVentanas.getInstance();
		ventanas.addVentana(this);
		setSize(new Dimension(800,400));
		Frame frame = GUIUtil2.getFrameParent(this);
		int left = (frame.getSize().width - getSize().width) / 2;
		int top = (frame.getSize().height - getSize().height) / 2;
		setLocation(left, top);

		initComponents(getContentPane());
	}

	public void initComponents(Container container) {
		container.setLayout(new BorderLayout());
		jTable = new JTable();
		scrollPane = new JScrollPane(jTable);
		scrollPane.setAutoscrolls(true);
		container.add(scrollPane, BorderLayout.CENTER);
		jTable.setColumnModel(getColumns());		
	}

	public DefaultTableColumnModel getColumns() {
		DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
		Vector vector = new Vector();
		vector.add("ID");
		for (int x = 0; x < nomeColunas.length; x++) {
			vector.add(Entorno.get(nomeColunas[x]));
		}

		for (int i = 0; i < vector.size(); i++) {
			TableColumn column = new TableColumn();
			String nome = (String) vector.get(i);
			column.setHeaderValue(nome);
			if (nome.equals("ID")) {
				column.setWidth(50);
				column.setResizable(false);

			} else {
				column.setWidth(nome.length() + 40);
				column.setResizable(true);
			}
			columnModel.addColumn(column);
		}
		return columnModel;

	}
	
	public DefaultTableModel getRows(){
		DefaultTableModel model = new DefaultTableModel();
		Oracle.load();
		try {
			String sql = "SELECT * FROM ATIVIDADE ORDER BY ID";
			Statement st = Oracle.getConnetion().createStatement();
			ResultSet rs = st.executeQuery(sql);
			ResultSetMetaData rsmd = rs.getMetaData();
			while (rs.next()){
				Object[] objects = new Object[rsmd.getColumnCount()];
				for (int i =0; i < rsmd.getColumnCount();i++){
					objects[i] = rs.getObject(i+1);
				}
				model.addRow(objects);
				
			}
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(this,e.getMessage());
		}
		return model;
	}
}

se eu não seto o tablemodel, os nomes das colunas aparecem, mas se eu indico o table model, meu jtable desaparece, e meu select tá retornando valor já verifiquei.

2 Respostas

ViniGodoy

Não use o DefaulTableModel. No lugar, aprenda como o TableModel funciona:
http://www.guj.com.br/posts/list/132698.java#714736

Ou use um TableModel mais inteligente, como ObjectTableModel, do do Mark_Ameba (link na minha assinatura).

M

ViniGodoy:
Não use o DefaulTableModel. No lugar, aprenda como o TableModel funciona:
http://www.guj.com.br/posts/list/132698.java#714736

Ou use um TableModel mais inteligente, como ObjectTableModel, do do Mark_Ameba (link na minha assinatura).


O porque disso está aqui. Mais um exemplo de TableModel aqui.

Criado 29 de janeiro de 2010
Ultima resposta 29 de jan. de 2010
Respostas 2
Participantes 3