oi
tenho mais um problema
eu tenho um JInternalFrame com um formulario e quando minimizar ele, eu queria que ao enves de ele parar no canto da tela ele fosse parar dentro da minha JToolBar
alguem pode me ajuda???
oi
tenho mais um problema
eu tenho um JInternalFrame com um formulario e quando minimizar ele, eu queria que ao enves de ele parar no canto da tela ele fosse parar dentro da minha JToolBar
alguem pode me ajuda???
Boa tarde Marcos.
Voce terá que implementar a interface de eventos chamada “InternalFrameListener” e adicionar este ouvinte a cada JInternalFrame, vamos a um exemplo prático de um JFrame que criei neste momento:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class FramePrincipal extends JFrame implements InternalFrameListener {
private JToolBar toolbar = null;
private JDesktopPane desktop = null;
public static void main(String args[]){
FramePrincipal fp = new FramePrincipal();
fp.setVisible(true);
}
public FramePrincipal(){
try {
// Aqui configura um layout com uma GUI agradável
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setMinimumSize(new Dimension(400,400));
initComponents();
pack();
setLocationRelativeTo(null);
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
}
private void initComponents(){
setLayout(new BorderLayout());
JMenuBar menubar = new JMenuBar();
JMenu mnufile = new JMenu("Arquivo");
JMenuItem mniopen = new JMenuItem("Abrir");
mniopen.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
addFrame();
}
});
mnufile.add(mniopen);
menubar.add(mnufile);
setJMenuBar(menubar);
JPanel mf = new JPanel(new FlowLayout());
desktop = new JDesktopPane();
desktop.setPreferredSize(new Dimension(400,300));
mf.add(desktop);
getContentPane().add(mf, BorderLayout.CENTER);
toolbar = new JToolBar();
getContentPane().add(toolbar, BorderLayout.SOUTH);
}
// Método para adicionar JInternalFrames
private void addFrame(){
JInternalFrame frame = new JInternalFrame("TesteFrame",true,true,true,true);
frame.setPreferredSize(new Dimension(200,100));
frame.addInternalFrameListener(this);
frame.setVisible(true);
desktop.add(frame);
frame.pack();
}
// Este evento é disparado quando o JInternalFrame é aberto, por enquanto não o utilizaremos
@Override
public void internalFrameOpened(InternalFrameEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
// Este evento é disparado quando o JInternalFrame está fechando, por enquanto não o utilizaremos
@Override
public void internalFrameClosing(InternalFrameEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
// Este evento é disparado quando o JInternalFrame acabou de fechar, por enquanto não o utilizaremos
@Override
public void internalFrameClosed(InternalFrameEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
// Este evento é disparado quando o JInternalFrame é iconizado, vamos utilizá-lo
@Override
public void internalFrameIconified(InternalFrameEvent e) {
JInternalFrame frame = (JInternalFrame)e.getSource();
toolbar.add(frame.getDesktopIcon());
}
// Este evento é disparado quando o JInternalFrame volta ao estado anterior, vamos utilizá-lo
@Override
public void internalFrameDeiconified(InternalFrameEvent e) {
JInternalFrame frame = (JInternalFrame)e.getSource();
toolbar.remove(frame.getDesktopIcon());
desktop.add(frame);
}
// Este evento é disparado quando o JInternalFrame ganha o foco, por enquanto não o utilizaremos
@Override
public void internalFrameActivated(InternalFrameEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
// Este evento é disparado quando o JInternalFrame perde o foco, por enquanto não o utilizaremos
@Override
public void internalFrameDeactivated(InternalFrameEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
}
Teste ai, e depois posta aqui o resultado.