Setar valores vindos de JTable

2 respostas
java
Marcos_Vinicios_Ange

Olá, eu estou tentando pegar o item selecionado da minha tabela e setar em uma textField, eu até consigo pegar os dados da linha selecionada, mas na hora de setar que ta sendo o problema, pois simplesmente não seta os valores… Até agora este processo é definido por 3 classes, a tela de vendas onde ficam os campos que quero preencher, a classe de consulta onde fica o frame para realizar as buscar e a classe PreencheCamposTelaDeVenda que fica responsável por pegar o index da tabela e depois atribuir os valores a variáveis estáticas para então setar nos textFields correspondentes, porem esta dando erro dizendo que está nulo mesmo eu tendo “tratado” isso… Alguém poderia me ajudar com isso? artigos, exemplos e dicas, não entendi muito bem como funciona essa parte e nem qual a melhor forma de se fazer isso. Segue minha tentativa abaixo →

Classe que faz a parte de pegar a linha selecionada e seus valores

public class PreencheCamposTelaDeVenda {

	public static String prodCod;
	public static BigDecimal unitValue;
	
	public static void preencheCamposProduto(JTable table) {
		int indexRow = table.getSelectedRow();
		Produto produto = ProdutoTableModel.get(indexRow);
		prodCod = produto.getProdCod();
		unitValue = produto.getPrecoLista();
		
	}
}

Este é o componente que fica na classe da tela de vendas, que eu quero setar o valor vindo da table

private JTextField getTextFieldCodProd() {
		if (textFieldCodProd == null) {
                        textFieldCodProd = new JTextField();
			textFieldCodProd.setText(
					(PreencheCamposTelaDeVenda.prodCod == null 
					|| PreencheCamposTelaDeVenda.prodCod.isEmpty() 
					|| PreencheCamposTelaDeVenda.prodCod.equals("")) 
					? ""
					: PreencheCamposTelaDeVenda.prodCod);
			textFieldCodProd.setFont(new Font("Times New Roman", Font.PLAIN, 22));
			textFieldCodProd.setColumns(10);
			textFieldCodProd.requestFocus();
		}
		return textFieldCodProd;
	}

Esta é a JTable que eu pego os valores

private JTable getTableProduto() {
		if (tableProduto == null) {
			tableProduto = new JTable();
			tableProduto.addMouseListener(new MouseAdapter() {
				public void mouseClicked(MouseEvent e) {
					frameVenda = new JFrameTelaDeVendas();
					PreencheCamposTelaDeVenda.preencheCamposProduto(tableProduto);
					dispose();
				}
			});
			tableProduto.setAutoCreateRowSorter(true);
			tableProduto.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
			tableProduto.setModel(new ProdutoTableModel(new ArrayList<Produto>()));
			tableProduto.getColumnModel().getColumn(0).setPreferredWidth(20);
			tableProduto.getColumnModel().getColumn(1).setPreferredWidth(150);
			tableProduto.getColumnModel().getColumn(2).setPreferredWidth(40);
			tableProduto.getColumnModel().getColumn(3).setPreferredWidth(10);
			new ConsultasSql(tableProduto,Produto.class,"Produto","prodCod, prodRef, prodDesc, precoLista",comboBoxProdSearch,textFieldProdSearch);
		}
		return tableProduto;
	}

Desde já agradeço a atenção!

2 Respostas

staroski

Porque tem tanto atributo estático?
Porque o ProdutoTableModel tem um método estático get?
Tem certeza de que você sabe o que é um membro estático?

Marcos_Vinicios_Ange

Foi uma ideia q eu tive pra deixar mais prático de certa forma, sem precisar instanciar a classe toda vez q for usar, já q vou ter q usar essa classe em outras 4 tabelas , e a questão dos valores estáticos é pq eu quero q eles fiquem salvos até o próximo ser chamado, pra mim fez sentido na hora, mas se tu tiver um sugestão melhor eu aceitaria também

Criado 14 de fevereiro de 2022
Ultima resposta 14 de fev. de 2022
Respostas 2
Participantes 2