[duvida] Action

Algueim tem um método simples de vc clicando em um botao e ele abrindo uma tela?
Obrigado

Fiz um aqui … da uma olhada

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class Frame extends JFrame {
	
	//cria um botão para abtir a nova janela
	private JButton botao;
	
	
	//construtor da classe
	public Frame(){
		
		//seta o titulo da janela
		super("Interface grafica");
		
		
		//seta o layout do frame
		setLayout(new FlowLayout());
		
		
		botao = new JButton("Teste teste");
		
		//cria um handle para tratar o evento de botao
		EventoBotao handler= new EventoBotao();

		
		this.add(botao);
		
		
		botao.addActionListener(handler);
		

	}
	
	//classe interna para tratar o evento de botao
	 private class EventoBotao implements ActionListener{

			public void actionPerformed(ActionEvent e) {
				
				//cria um novo frame
				JFrame j = new JFrame();
				
				j.setTitle("Nova janela");
				
				j.setSize(200, 200);
				
				//deixa o frame visivel
				j.setVisible(true);
				
}
}
	 }

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Frame f = new Frame();
		
		f.setVisible(true);
		
		f.setSize(200, 200);

	}

}

A classe main cria um frame , nele existe um botão , clicando nele vc dispara um evento que e tratado na classe interna EventoBotao implements ActionListener que implementa o metodo action Performed , nele nos tratamos o evento , neste caso apenas criamos um objeto j que representa um novo frame , ai ele abre uma outra janela…

vlw vou testar aqui agora mesmo!

perfeito deu para intender claramente como funciona mas e se eu no caso quando apertar um F2 que seria um case: 113 eu implemento o actionlistener dentro do case?
ex:

switch(Integer.parseInt(tecla[1]))
     {
	case 112: //F1
	JOptionPane.showMessageDialog(null, "Pressionou o botao F1");
           break;

perfeito era isso mesmo consegui vlw pela forca amigo

epa mas falto uma coisa, tipo eu tenho o metodo de capturar o botao F1, tambem tenho o metodo de AO clicar no botao F1, mas falto uma coisa um meio de selecionar o botao AO clicar no F1, pq ele captura a tecla e abre o evento mas nao seleciona o botao… entenderam? qqr coisa tento explicar melhor!

algueim?

não entendi o que vc quer faer…

Sugestão: faça suas ações SOMENTE no ActionListener do BOTÃO. No KeyListener, faça algo como:

switch (e.getKeyCode()) {
    case KeyEvent.F1:
    botaoF1.doClick(); // se seu botão se chamar F1
    break;
}

Com isso você concentra todos os eventos somente nos botões.

A ideia e praticamente a mesma do evento de botao , criei uma classe interna que implementa keyListneer para ouvir o evento de teclado

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;


public class Frame extends JFrame {
	
	//cria um botão para abtir a nova janela
	private JButton botao;
	
	
	//construtor da classe
	public Frame(){
		
		//seta o titulo da janela
		super("Interface grafica");
		
		
		//seta o layout do frame
		setLayout(new FlowLayout());
		
		
		botao = new JButton("Abrir nova janela");
		
		//cria um handle para tratar o evento de botao
		EventoBotao handler= new EventoBotao();

               //cria um handle para tratar o evento de teclado
		EventoTeclado handlerTeclado = new EventoTeclado();
		
		this.add(botao);
		
		
		//nao se esqueça de tirar o foco do botao
		botao.setFocusable(false);
		
		botao.addActionListener(handler);
	    
		//adicionar o ouvidor de evento ao jframe
		addKeyListener(handlerTeclado);

		
		

	}
	
	//classe interna para tratar o evento de teclado 
	private class EventoTeclado implements KeyListener{
		
		@Override
		public void keyPressed(KeyEvent e) {
			switch (e.getKeyCode()) {
			case 112: //f1
				JOptionPane.showMessageDialog(null, "Pressionou o botao F1");  
				
				break;

			default:
				break;
			}
				// TODO Auto-generated method stub
			
		}

		@Override
		public void keyReleased(KeyEvent arg0) {		
		}

		@Override
		public void keyTyped(KeyEvent arg0) {
		}
		
	}
	
	
	//classe interna para tratar o evento de botao
	 private class EventoBotao implements ActionListener {

			public void actionPerformed(ActionEvent e) {
				
				//cria um novo frame
				JFrame j = new JFrame();
				
				j.setTitle("Nova janela");
				
				j.setSize(200, 200);
				
				//deixa o frame visivel
				j.setVisible(true);
				
}

	 }
}

A main pode ser a mesma do meu codigo postado acima … so um detalhe os metodos não da classe EventoTeclado não foram implentados , mas eles são necessarios para compilar o codigo , pois quando vamos implementar uma interface temos que implementar todos seus metodos …
Qualquer duvida posta ai …flw