[RESOLVIDO] Desabilitar componentes em Forms diferentes

5 respostas
L

Tenho um Form1, a partir dele chamo um Form2.
Ao clicar em um jButton no Form2 quero Desabilitar componentes (jButton, etc…) no Form1.
Da pra fazer?
obrigado.

5 Respostas

WendersonLP

Bem, uma alternativa é você criar um método no Form1 e chama-lo no Form2.
Creio que isso deva resolver.

D

valeu

L

Fiz este metodo mas nao funciona.Fiz outros tb mas nao funcionao.

public void desabilita (){
     jButton1.setEnabled(false);
  }

Quando clico no jButton no form2 onde chamo o metodo, nada acontece no form1.

form1.desabilita();

Acho que e mais complicado que isto.Ou eu to fazendo alguma coisa errada.
valeu!

O

Opa, dá para fazer sim.

Um exemplo de código seria:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Form1 extends JFrame {

	private static final long serialVersionUID = 1L;

	private JButton botaoAbrirForm2 = new JButton("Abrir Form2");
	private Form2 form2 = new Form2(this);
	
	public static void main(String[] args) {
		Form1 f1 = new Form1();
		f1.setVisible(true);
	}

	public Form1() {
		setTitle("Formulario 1");
		setSize(400, 300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		
		JPanel painel = new JPanel(new FlowLayout());
		painel.add(new JButton("Botao 1"));
		painel.add(new JButton("Botao 2"));
		painel.add(new JButton("Botao 3"));

		painel.add(new JTextField("Caixa de texto 1"));
		painel.add(new JTextField("Caixa de texto 2"));
		painel.add(new JTextField("Caixa de texto 3"));
		
		getContentPane().add(painel, BorderLayout.CENTER);

		getContentPane().add(botaoAbrirForm2, BorderLayout.SOUTH);
		botaoAbrirForm2.addActionListener(new ExibirForm2ActionAListener());
	}
	
	private class ExibirForm2ActionAListener implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			form2.setVisible(true);
		}
	}
}

class Form2 extends JFrame {

	private static final long serialVersionUID = 1L;
	
	private Form1 form1;
	private JButton botaoDesabilitarTodosComponentesDoForm1 = new JButton("Desabilitar todos compontentes do Form1");
	
	public Form2(Form1 form1) {
		this.form1 = form1;
		setTitle("Formulario 2");
		setSize(300, 200);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		getContentPane().add(botaoDesabilitarTodosComponentesDoForm1, BorderLayout.SOUTH);
		botaoDesabilitarTodosComponentesDoForm1.addActionListener(new DesabilitarTodosComponentesDoForm1ActionListener());
	}

	private class DesabilitarTodosComponentesDoForm1ActionListener implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			form1.setEnabled(false);
		}
	}
}

Bom, espero ter ajudado.

L

Valeu ajudou muito!!
Obrigado

Criado 30 de janeiro de 2010
Ultima resposta 3 de fev. de 2010
Respostas 5
Participantes 4