Atualizar - JFRAME

7 respostas
W

Ola Pessoal,

Sou novo no grupo e já estou com uma dúvida. 8O

Eu estou fazendo uma interface grafica utilizando JFRAME, na realidade são duas interfaces. A partir da primeira eu executo a segunda, ou seja, eu seleciono uma opção do JComboBOX e uma opção do JRadioButton, para cada opção selecionada do JRadio eu crio uma segunda interface clicando em um botão. Para cada opção seleciona eu crio somente uma segunda interface, mas esta deve ser atualizada quando eu selecionar a mesma opcao no JRadio e selecionar uma outra no JComboBOXe clico no botão e ai eu passo o que foi selecionado nesse JComboBOX para essa outra interface que neste caso já estava criada, mas que agora deve ser atualizada. Eu tenho duas classes, uma para a primeira interface e a outra para a segunda.

A minha dúvida é quando eu tiver a segunda interface aberta e eu selecionar uma outra opção do JCOMBOBOX eu queria atualizar a segunda interface, ou seja, passar o que foi selecionado para o JComboBOX da segunda interface. Acredito que eu teria que atualizar o JFRAME, mas não sei como fazer isso. Alguem pode me ajudar???

Obrigado…

Wagner

7 Respostas

E

eae primeriamente seja bem vindo ao PJ :cool:

bom achu q naum entendi muito bem oq tu quiz dizer, mas oq tu queria seria mais ou menos isso:

vc tem o JComboBOX nas duas GUI( interface grafica com o usuário )
e vc quer quando for alterado o JComboBOX de uma interface seja alterado o conteudo da outra?

bom vc pode fazer da seguinte forma, eu jah fiz isso uma vez e funcionou
chamar: interface2.JComboBOX.método

com isso vc consegue acessar o objeto ativo e realizar algum serviço

ou vc pode fazer referencia de uma interface dentro da outra classe de interface

tipow:

dentro das classes ter um objeto que vc receba a referencia dessa classe
assim vc tendo a possibilidade de acessar qualquer método da outra interface enquanto estiver ativa

será q consegui ajudar em algo ai? :roll:

vou verificar quando a primeira forma q eu comentei de acesso

qq novidade eu post aki

[]'s
Erko Bridee

W

“AnjoSupremo”:
eae primeriamente seja bem vindo ao PJ :cool:

Obrigado…

bom achu q naum entendi muito bem oq tu quiz dizer, mas oq tu queria seria mais ou menos isso:

vc tem o JComboBOX nas duas GUI( interface grafica com o usuário )
e vc quer quando for alterado o JComboBOX de uma interface seja alterado o conteudo da outra?

É mais ou menos isso, vou tentar explicar melhor. Eu tenho duas interfaces, na primeira eu tenho um JComboBox com os usuários e um grupo de JRadioButton com disciplinas. Então, eu seleciono um morador e uma disciplina, com isso depois q eu clicar no botão ok o sistema abre uma outra interface com um JComboBOX q está armazenado o morador que foi selecionado na primeira interface. Para cada disciplina q eu tenho no grupo de JRadioButton é criada essa segunda interface, isso quer dizer que se eu selecionar um novo usuario no JComboBOx na primeira interface e ainda selecionar a mesma disicplina, o sistema não deve abrir uma nova segunda interface (isso esta ok para o meu sistema), mas deve atualizar o JComboBox da segunda interface passando o novo usuário q foi selecionado.
A minha dúvida está nesse ponto, como q eu vou atualizar o JComboBOX da segunda interface.

Não sei se vc entendeu melhor agora.

De qualquer modo, obrigado pela resposta.

[]s

Wagner

bom vc pode fazer da seguinte forma, eu jah fiz isso uma vez e funcionou
chamar: interface2.JComboBOX.método

com isso vc consegue acessar o objeto ativo e realizar algum serviço

ou vc pode fazer referencia de uma interface dentro da outra classe de interface

tipow:

dentro das classes ter um objeto que vc receba a referencia dessa classe
assim vc tendo a possibilidade de acessar qualquer método da outra interface enquanto estiver ativa

será q consegui ajudar em algo ai? :roll:

vou verificar quando a primeira forma q eu comentei de acesso

qq novidade eu post aki

[]'s
Erko Bridee

J

Você está com um problema muito comum que ocorre em Java, que eh a questão da atualização de telas, para isso, chame o método repaint() de qualquer componente
GUI que ele se redesenha !!!
Se a primeira solução nao funcionar, faça o seguinte:
Crie o seguinte método:

public void rePaint(){
     paintComponents(this.getGraphics());

}

O método acima redesenha todos os componentes existentes.

Isso deve lher ajudar.

<<<<<Javamen1>>>>>

W

“javamen1”:
Você está com um problema muito comum que ocorre em Java, que eh a questão da atualização de telas, para isso, chame o método repaint() de qualquer componente
GUI que ele se redesenha !!!
Se a primeira solução nao funcionar, faça o seguinte:
Crie o seguinte método:

public void rePaint(){
     paintComponents(this.getGraphics());

}

O método acima redesenha todos os componentes existentes.

Isso deve lher ajudar.

<<<<<Javamen1>>>>>


Olá,

Obrigado pelas dicas, mas como q eu vou passar o JComboBox para atualizar utilizando esse método.

[]s

Wagner

E

“wagner_duvidas”:

Olá,

Obrigado pelas dicas, mas como q eu vou passar o JComboBox para atualizar utilizando esse método.

[]s

Wagner

hum cara agora q naum entendi mesmo oq tu quer fazer???

vc quer atualizar algum componente, valor dentro da outra interface
ou vc quer realizar um refresh da janela :?: :roll:

[]'s
Erko Bridee

R

Cara se eu não me engano tem um método do JFrame chamado repaintArea…

dá uma verificada…

Flw

W

[color=white]

“AnjoSupremo”:
“wagner_duvidas”:

public class Interface00 extends JFrame

{

private JRadioButton[] radio = new JRadioButton[10];

String mora, comodo;

int iten=0;

Interface02 jframe01;

Vector cod_mora = new Vector();

Vector colun1= new Vector();

StringBuffer modelo;

Vector nomesComo = new Vector();

Vector colun2= new Vector();
public Interface00() 
{
      super("Placa");
      setSize(210, 190);
		
       try 
      {
Class.forName( "org.gjt.mm.mysql.Driver" );           
		-------------------
		-------------------
		-------------------
		-------------------
		-------------------
							
}catch(ClassNotFoundException e){System.out.println("Classe Não Encontrada " + e.getMessage());}
catch(Exception e){System.out.println("Erro Geral de Acesso ao Banco de Dados = " + e.getMessage());
}
  JPanel p1 = new JPanel();
  p1.setLayout(new BoxLayout(p1, BoxLayout.X_AXIS));
 JPanel p1r = new JPanel();
  p1r.setBorder(new EmptyBorder(10, 10, 10, 10));
  p1r.setLayout(new GridLayout(3, 2, 5, 5));
	
 p1r.add(new JLabel("Morador:"));
final JComboBox cb = new JComboBox(cod_mora);
p1r.add(cb);
	p1.add(p1r);
			
	cb.addActionListener(new ActionListener() 
	{
		public void actionPerformed(ActionEvent e) 
		{
			mora = (String) cb.getSelectedItem();
			System.out.println("Selecionado"+ mora);
			//morador_selecionado(mora);
		}
		
	});
	
	JPanel p3 = new JPanel();
	p3.setLayout(new BoxLayout(p3, BoxLayout.Y_AXIS));
	p3.setBorder(new TitledBorder(new EtchedBorder(),"Cômodos"));
	ButtonGroup group = new ButtonGroup();
	String a[] = new String[20];
	
	//para registar os eventos dos RadioButtons
	RadioButtonHandler handler = new RadioButtonHandler();
	
	for (int i=0;i&lt;nomesComo.size();i++)
	{
		a[i] = (String) nomesComo.elementAt(i);
		radio[i]= new JRadioButton(a[i]);
		p3.add(radio[i]);
		radio[i].addItemListener(handler);
		group.add(radio[i]);			
	}
	
	p1.add(p3);
	
	getContentPane().add(p1, BorderLayout.NORTH);
	
	JPanel p4 = new JPanel();
	JPanel p4c = new JPanel();
	p4c.setLayout(new GridLayout(1, 3, 5, 5));
	
	JButton entrar = new JButton("Entrar");
	p4c.add(entrar);
	
    	entrar.addActionListener(new ActionListener() 
	{
		//Cria um vetor para armazenar os cômodos selecionados
		private Vector mv = new Vector();
					
		public void actionPerformed(ActionEvent ev) 
		{
			System.out.println("Morador selecionado:" +mora);
			System.out.println("Comodo selecionado:" +comodo);
			
			//cria o modelo
			modelo = new StringBuffer();
					
			if (mv.contains(comodo))
			{
				System.out.println("A JANELA JA ESTA ABERTA!!!!");	

               			-------------------
				//Aqui eu tenho que tratar a atualização do JComboBox, neste caso a janela já esta 
				//aberta

		                -------------------
			}
				
							
			}
			else
			{
				//Adiciona o comodo selecionado a um vetor mv
				mv.add(comodo);
				
				//Cria um JFrame quando o usuário clicar no botão de entrar informando que tem um 
				//morador em um determinado cômodo da casa
				Interface02 jframe01 = new Interface02(comodo, modelo, mora);
				jframe01.pack();
				jframe01.show();
				
									
			}
			System.out.println("VETOR: "+mv);				
		}
	});

	JButton cancelar = new JButton("Cancelar");
	p4c.add(cancelar);
	p4.add(p4c);
	cancelar.addActionListener(new ActionListener() 
	{
		public void actionPerformed(ActionEvent ev) 
		{
			System.exit(0);				
		}
	});

	getContentPane().add(p4, BorderLayout.SOUTH);
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setVisible(true);
}

public static void main(String argv[]) 
{
	new Interface00();
}

  //Classe para definir as ações dos itens selecionados dos radios buttons
  public class RadioButtonHandler implements ItemListener
  {
	  public void itemStateChanged (ItemEvent e)
	  {
		//String comodo = null;
		  for (iten=0;iten&lt;=nomesComo.size();iten++)
		  {
			  if (e.getSource() == radio[iten])
			  {
				  System.out.println("Selecionou o "+iten+" º item.");
				  comodo = (String) nomesComo.elementAt(iten);
				  System.out.println("Nome do Comodo: "+comodo+" selecionado");
			  }
		  }
	  }
  }

}

class Interface02 extends JFrame

{

private JLabel label1;

StringBuffer modelo;

String idt;

private JTextField entrada1, entrada2, entrada3, entrada4;
public Interface02(String comodo, StringBuffer modelo, String mora) 
{
	super();
	this.setTitle(idt);
	this.modelo = modelo;
	JPanel morad = new JPanel();
	morad.setLayout(new GridLayout(1,3,5,5));
	morad.setBorder(new TitledBorder(new EtchedBorder(),"Morador(es)"));
	morad.add(new JLabel("Saída: "));
	
	JComboBox saida = new JComboBox();
	morad.add(saida);
	saida.addItem(mora);
			
	JButton b5 = new JButton("Sair");
	morad.add(b5);
	
	
	
	JPanel sensor = new JPanel();
	sensor.setLayout(new GridLayout(2,3,5,5));
	sensor.setBorder(new TitledBorder(new EtchedBorder(),"Dados do Sensor"));
	
	sensor.add(new JLabel("Temperatura: "));
	entrada1 = new JTextField(2);
	sensor.add(entrada1);
	JButton b1 = new JButton("Alterar");
	sensor.add(b1);
	
	sensor.add(new JLabel("Luminosidade: "));
	entrada2 = new JTextField(2);
	sensor.add(entrada2);
	JButton b2 = new JButton("Alterar");
	sensor.add(b2);
	
	
	
	JPanel morador = new JPanel();
	morador.setLayout(new GridLayout(2,3,5,5));
	morador.setBorder(new TitledBorder(new EtchedBorder(),"Dados do Morador"));
	
	morador.add(new JLabel("Termostato: "));
	entrada3 = new JTextField(2);
	morador.add(entrada3);
	
	JButton b3 = new JButton("Alterar");
	morador.add(b3);
	
	morador.add(new JLabel("Dimmer: "));
	entrada4 = new JTextField(2);
	morador.add(entrada4);
					
	JButton b4 = new JButton("Alterar");
	morador.add(b4);

	
	Container c = getContentPane();
	c.setLayout(new BorderLayout());
	c.add(sensor, BorderLayout.WEST);
	c.add(morador, BorderLayout.SOUTH);
	c.add(morad, BorderLayout.NORTH);
	
	setSize(300,300);
	show();
}

}

Olá pessoal,

Acho q não estou conseguindo explicar o meu problema, por isso resolvi colocar o código.

Mais uma vez, obrigado pela ajuda.

[]s

Wagner

hum cara agora q naum entendi mesmo oq tu quer fazer???

vc quer atualizar algum componente, valor dentro da outra interface
ou vc quer realizar um refresh da janela :?: :roll:

[]'s
Erko Bridee

Criado 15 de setembro de 2004
Ultima resposta 15 de set. de 2004
Respostas 7
Participantes 4