Transferencia de dados de um JDialog para JFrame

3 respostas
M
Olá a todos!!Tenho os seguintes codigos:
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
import java.awt.*;

public class Dialogo extends JDialog implements ActionListener{
	
	DefaultTableModel mode;
	JTable tabela;
	JButton botao;
		Long id ;
	public Dialogo(JComponent frame){
		setTitle("frame");
		setLayout(new FlowLayout());
		
		 mode = new DefaultTableModel(){
			public Class getColumnClass(int column){
				return getValueAt(0,  column).getClass();
			}
		};
		JPanel panel = new JPanel();
		botao = new JButton("Trans");
		panel.add(botao);
		JPanel panel2 = new JPanel();
		mode.addColumn("ID");
		mode.addColumn("NOME");
		mode.addColumn("TRANSFERENCIA");
		mode.addRow(new Object[]{1,"Fulano", false});
		mode.addRow(new Object[]{2, "Ciclano", false});
		tabela = new JTable(mode);
		panel2.add(new JScrollPane (tabela));
		add(panel);
		add(panel2);
		botao.addActionListener(this);
		setSize(200,300);
		setVisible(true);
		
	}
	
	public void actionPerformed(ActionEvent e){
		if(e.getSource()==botao){
				int i=0;
				  while(i <=mode.getRowCount()-1){
					  if (mode.getValueAt(i,2)==Boolean.TRUE){
						  
						  try{
								id = Long.parseLong(mode.getValueAt(i, 0).toString());
									
								///System.out.println(getId());
								
							  }catch(Exception ex){ex.printStackTrace();}
							// dtm.removeRow(i);
							break;
				 	 }
				 	 else { i++;}
				 	 
				 	
							
				  }
			//setVisible(false);
			 setVisible(false);
		}
	
	}
	
	public Long getId(){
		
		return id;
	}
	
	
}
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Principal extends JFrame implements ActionListener{
	JButton botao ;
	JLabel teste;
	public Principal(){
		
		super("TESTE!!");
		setLayout(new FlowLayout());
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		botao = new JButton("TEste");
		getContentPane().add(botao);
		teste = new JLabel("Teste");
		getContentPane().add(new JPanel().add(teste));
		botao.addActionListener(this);
		setSize(400,330);
		setVisible(true);	
	}
	
	public void actionPerformed(ActionEvent e){
		if(e.getSource() == botao ){
			Dialogo dia = new Dialogo(null);
			System.out.println(dia.getId());
			

			
		}
	}
	
	
	public static void main(String[] args){
		new Principal();
	}
}
Porque esta me retornando nulo?Alguem poderia me ajudar!!

3 Respostas

ViniGodoy

Sua Dialog não é modal. No construtor da dialog, adicione a linha:
setModal(true);

Se a dialog não for modal, a chamada a setVisible(true) não bloqueará a execução e o programa irá pegar o ID antes mesmo da janela fechar.

Com o setModal(true), o programa para até que a janela seja fechada, e um ID seja selecionado.

Outra coisa. Notei que você está usando o DefaultTableModel. Para uma experiência, tudo bem. Mas na prática, implemente o seu próprio TableModel, filho de AbstractTableModel.

Deixa o programa mais organizado e mais simples, além de permitir que você trabalhe com as listas de seus objetos de negócios diretamente (e não fique convertendo/desconvertendo os campos deles para Strings).

M

Hhehehe!!!Vou deixar mais organizado!!Estava entrando em desespero!!Deve ser por isso!!Obrigado novamente!!!

M

Oi, Godoy!!E por que se eu não seleciono nada!!!Me retorna erro!!!??

Criado 27 de abril de 2007
Ultima resposta 28 de abr. de 2007
Respostas 3
Participantes 2