Como utilizar o JDialog dentro do JInternalFrame

6 respostas
jason_bourne

Pessoal,

Tenho uma aplicação em swing e estou tentando deixar ela mais elegante. Tenho um JInternalFrame que utilizo em quase todas as telas. Acontece que eu preciso chamar um JDialog dentro desse JInternalFrame, e não sei como, pois os construtores de um e de outro são diferentes. Alguém teria uma idéia? Eu não gostaria de criar mais uma classe só pra chamar o JDialog.

6 Respostas

qmx

http://java.sun.com/developer/JDCTechTips/2001/tt1220.html

davidbuzatto

Mas qual o problema de serem diferentes?

jason_bourne

É que eu queria aglutinar todas as telas de por exemplo… estoque em uma classe chamada Estoque. Assim o view e controler de estoque ficaria em apenas uma classe enquanto que a parte de model ficaria em outra classe EstoqueDAO.

davidbuzatto

Independente da organização das suas classes, eu ainda não entendi porque você não consegue criar e exibir um diálogo a partir de um JInternalFrame.

jason_bourne

Fica mais fácil vendo o código.

Eu tenho esse código que monta um table com todos os itens encontrados na pesquisa. Quando o usuário clica em uma das linhas, eu gostaria que aparecesse um JDialog que mostraria os dados para edição. Acontece que a linha Estoque.Alterar(intValue); chama uma classe que estende JInternalFrame, pois essa classe é que eu quero que monte todas as telas para o estoque (mas estou achando que isso não é possível e que vou ter que criar uma outra classe só pro JDialog.

ListSelectionModel listMod=resultTable.getSelectionModel();
		listMod.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		listMod.addListSelectionListener(
				new ListSelectionListener(){
					public void valueChanged(ListSelectionEvent e){
						int[] selRows;
						Object value;
						if (!e.getValueIsAdjusting()){
							selRows=resultTable.getSelectedRows();
							if (selRows.length>0){
								for (int i=0;i<1;i++){
									TableModel tm=resultTable.getModel();
									value=tm.getValueAt(selRows[0],i);
									int intValue = ((Integer) value).intValue();
									try {
										Estoque.Alterar(intValue);
									} catch (SQLException e1) {
										e1.printStackTrace();
									}


								}

							}
						}
					}
				}
		);

Inicio da classe Estoque:

public class Estoque extends JInternalFrame implements ActionListener {

	private static final long serialVersionUID = -1237537304008263064L;

	private JLabel lblNome;

	private JTextField txtNome;
.
.
.
davidbuzatto

Então vc vai precisar refazer a interface usando um diálogo…
Uma opção seria criar um JPanel com toda essa interface e usar ele no internal frame e no diálogo.
Ai vc consegue não duplicar o código.

Criado 26 de fevereiro de 2008
Ultima resposta 26 de fev. de 2008
Respostas 6
Participantes 3