Botao do tipo Cancelar (Fechar um JInternalFrame)

Estou criando uma interface com JInternalFrame e uma classe comum aos JInternalFrames

Gostaria de saber como crio um

botao2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

      // fazer com que ao clicar no botao eu feche o JInternalFrame
     //JInternalFrame varia o nome

}

}
);

obrigado

gatecrasher@linuxmail.org

Para adicionar o evento no botão:

...
		jBtnConnect.addActionListener(
			new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					ConectaClient(evt);
				}
			}
		);
...

//Metodo que vai tratar o click do botão
private void ConectaClient(ActionEvent evt) {
// código que será executado...
}

Não entendi de onde vc quer fechar o JInternalFrame.

  1. No próprio JInternalFrame?
  2. JFrame que chamou ele?

Já que eu não entendi exatamente o que você queria fiz um exemplinho…

/*
 * by black_fire
 * Rodrigo G. Tavares de Souza
 * 
 * Nome do arquivo: CloseJInternalFrame.java
 * 
 */

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.event.InternalFrameEvent;
import javax.swing.event.InternalFrameListener;

public class CloseJInternalFrame extends JFrame {

	private void exibirFomulario(ActionEvent evt) {
		if (frameInterno == null) {
			// inicia frame
			frameInterno = new FrameInterno(this);
			// adiciona o frame no DesktopPane
			desktop.add(frameInterno);
		}
		// Exibe o frame
		frameInterno.setVisible(true);

	}

	// este método está declrado como público para poder ser executado por outra classe
	public void fecharFormulario(ActionEvent evt) {
		// verifica se há uma referencia válida para o objeto
		if (frameInterno != null) {
			// libera o objeto
			frameInterno.dispose();
			frameInterno = null;
		}
	}

	// Adiciona os eventos da aplicação
	private void addEvents() {
		// Adiciona o evento de close da janela
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		addWindowListener(
			new WindowAdapter() {
				public void windowClosing(WindowEvent e) {
					System.exit(0);
				}
			}
		);
		
		// botão exibir
		exibir.addActionListener(
			new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					exibirFomulario(evt); 
				}
			}
		);
		
		// botão exibir
		fecharF.addActionListener(
			new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					 fecharFormulario(evt);
				}
			}
		);
	}

	private void iniciaCloseJInternalFrame() {
		// Atribui um layout manager
		BorderLayout b = new BorderLayout();
		// Atribui o o layout no form
		getContentPane().setLayout(b);
		
		// Inicializa os componentes
		top = new JPanel();
		exibir = new JButton("Mostra Frame");
		fecharF = new JButton("Fechar Fame");
		desktop = new JDesktopPane();
		
		// Adiciona os componentes no frame
		getContentPane().add(top,BorderLayout.NORTH);
		FlowLayout f = new FlowLayout(FlowLayout.LEFT);
		top.setLayout(f);
		
		top.add(exibir);
		top.add(fecharF);
		
		getContentPane().add(desktop);
		
		//chama metodo para adicionar eventos...
		addEvents();
		
		setSize(600,440);
		show();
	}

	public CloseJInternalFrame() {
		iniciaCloseJInternalFrame();
	}

	public static void main(String[] args) {
		new CloseJInternalFrame();
	}
	
	private JPanel top;
	private JButton exibir;
	private JButton fecharF;
	private JDesktopPane desktop;
	
	private FrameInterno frameInterno; 
}


// Frame interno...
// estamos implementando InternalFrameListener para que 
// quando o form for fechado pelo "X" possamos liberar o objeto
class FrameInterno extends JInternalFrame implements InternalFrameListener {
	
	private void clickFecharI(ActionEvent  evt) {
		// chama o evento do form pai para fechar o forumlario
		closeJInternalFrame.fecharFormulario(null);
	}
	
	// os eventos abaixo devem ser implementados devido
	// Interface InternalFrameListener
	public void internalFrameClosing(InternalFrameEvent e) {
		closeJInternalFrame.fecharFormulario(null);	
	}

	public void internalFrameClosed(InternalFrameEvent e) {}

	public void internalFrameOpened(InternalFrameEvent e) {}

	public void internalFrameIconified(InternalFrameEvent e) {}

	public void internalFrameDeiconified(InternalFrameEvent e) {}

	public void internalFrameActivated(InternalFrameEvent e) {}

	public void internalFrameDeactivated(InternalFrameEvent e) {}
	// **********************************************************
	
	
	private void addEvents() {
		addInternalFrameListener(this);
		
		fecharI.addActionListener(
			new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					clickFecharI(evt);
				}
			}		
		);	
	}
	
	private void iniciaFrameInterno() {
		fecharI = new JButton("Fechar");
		getContentPane().add(fecharI);
		setClosable(true);
		setSize(300, 200);
		
		// Adciona eventos para este formulários
		addEvents();
	}
	
	public FrameInterno(CloseJInternalFrame closeJInternalFrame) {
		this.closeJInternalFrame = closeJInternalFrame;
		iniciaFrameInterno();
	}
	
	private JButton fecharI;
	
	// referencia do frame pai
	private CloseJInternalFrame closeJInternalFrame;	 
}

Um abraço kra…
:wink: