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.
- No próprio JInternalFrame?
- 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…
