ObjectTableModel

7 respostas
C

Pessoal,

Estou implementando o ObjectTableModel mas, quando escrevo:

@Resolvable(colName = Codigo)

diz que a variável “Codigo” não pode ser resolvida. Pelo o que eu havia entendido, essa linha de código serviria apenas para informar o nome de uma coluna do meu JTable. estou errado?

Aguém aí tem alguma dica para este problema?

Obrigado.

7 Respostas

C

Equece pessoal, acabei de ver que havia esquecido de colocar as “” (aspas duplas) no atributo. :oops: #fail³

C

Surgiu um novo problema, eu já tentei de tudo mas ainda não encontrei uma resolução.
Quando insiro minha JTable em um JScrollPane uma java.lang.NullPointerException é lançada, pelo o que pude notar parece que minha classe Produtos não está sendo interpretada corretamente.
Segue os codigos:

package br.tcc;

import com.towel.el.annotation.Resolvable;

public class Produtos {
	@Resolvable(colName = "Nome")
	private String nomeProduto;
	@Resolvable(colName = "Descricao")
	private String descricaoProduto;
	@Resolvable(colName = "Preco")
	private double preco;

	public Produtos(String nome, String descricao, double preco) {
		this.nomeProduto = nome;
		this.descricaoProduto = descricao;
		this.preco = preco;
	}

	public String getNomeProduto() {
		return nomeProduto;
	}

	public void setNomeProduto(String nomeProduto) {
		this.nomeProduto = nomeProduto;
	}

	public String getDescricaoProduto() {
		return descricaoProduto;
	}

	public void setDescricaoProduto(String descricaoProduto) {
		this.descricaoProduto = descricaoProduto;
	}

	public double getPreco() {
		return preco;
	}

	public void setPreco(double preco) {
		this.preco = preco;
	}

}
import br.tcc.Produtos;
import br.tcc.conexao.ConnectionClass;

import com.towel.el.annotation.AnnotationResolver;
import com.towel.swing.table.ObjectTableModel;

public class GUIPratos extends JFrame implements ActionListener {

	private JLabel titulo;
	private JButton finalizar;
	private JButton cancelar;
	private JButton continuarComprando;
	private JTable cardapioPratos;
	private JScrollPane pane;

	// pega a resolucao no monitor
	Dimension dimensao = Toolkit.getDefaultToolkit().getScreenSize();
	// insere em variaveis a altura e a largura
	int y = (int) dimensao.getHeight();
	int x = (int) dimensao.getWidth();

	public GUIPratos() throws SQLException {
		AnnotationResolver resolver = new AnnotationResolver(Produtos.class);
		ObjectTableModel<Produtos> tableModel = new ObjectTableModel<Produtos>(
				resolver, "nomeProduto,descricaoProduto,preco");
		tableModel.setData(getData());
		setUndecorated(true);
		setSize(x, y);
		// setSize(1366, 768);
		setExtendedState(MAXIMIZED_BOTH);
		getContentPane().setLayout(null);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		Container con = getContentPane();

		titulo = new JLabel("Pratos");
		titulo.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 15));
		finalizar = new JButton("Finalizar");
		finalizar.setFont(new Font("Tahoma", Font.PLAIN, 11));
		cancelar = new JButton("Cancelar");
		cancelar.setFont(new Font("Tahoma", Font.PLAIN, 11));
		continuarComprando = new JButton("Mais produtos");
		continuarComprando.setFont(new Font("Tahoma", Font.PLAIN, 11));
		cardapioPratos = new JTable(tableModel);

essa é a linha onde o erro acontece:

pane.setViewportView(cardapioPratos);

Alguém sabe o motivo?

Marky.Vasconcelos

Cade onde voce inicializa o pane?

C

:oops: Foi mal Marky, havia esquecido de inicializar o pane.

Agora como eu faço para que os nomes das colunas definidas em @Resolvable(colName = "nomeDaColuna") apareça em meu JTable?

Obrigado.

Marky.Vasconcelos

Era só colocar dentro de um JScrollPane, não apareceu?

C

Mais uma questão. Utilizo esse método para preencher meu JTableModel:

private List<Produtos> getData() throws SQLException {
		List<Produtos> lista = new ArrayList<Produtos>();
		ConnectionClass conexao = new ConnectionClass();
		conexao.getConnection();
		ResultSet resultado = conexao
				.resultado(
						DriverManager.getConnection(
								"jdbc:mysql://localhost/menudigital", "root",
								"root"),
						"select codigo,nome,descricao,valor from produtos where codigo_categoria = 2;",
						"Não foi possível executar o comando");

		while (resultado.next()) {
			Produtos produto = new Produtos(resultado.getString("nome"),
					resultado.getString("descricao"),
					Double.parseDouble(resultado.getString("valor")));
			lista.add(produto);
		}
		return lista;
	}

Como faço para pegar os dados de uma coluna clicada pelo usuario?

C

Marky,

Não apareceu não…!!!

[]'s

Criado 20 de outubro de 2012
Ultima resposta 24 de out. de 2012
Respostas 7
Participantes 2