curso de java – aula 10
TRANSCRIPT
Curso de Java – Aula 10
JDesktopPaneJInternalFrame
Ivo Augusto Fontana BertoncelloMarcelo de Oliveira Dias
JDesktopPane
JDesktopPane é um conteiner de JComponent, ou seja, um painel. Utilizando JDesktopPane conseguese criar mútiplas janelas dentro de uma janela principal.
Como o JDesktopPane foi projetado para suportar outras janelas em seu interior, é desaconselhável sua utilização como um painel normal.
JInternalFrame
JInternalFrame é a classe que implementa janelas internas no JAVA.
Aplicações que fazem uso desse tipo de interface MDI Multiple Document Interface ― ―são projetados para trabalhar com múltiplos documentos paralelamente.
Utilizandoos
Para criar uma interface MDI primeiramente temos que ter uma janela principal para gerenciar as demais:public class JPrincipal extends JFrame{
public JPrincipal(){
super(“Janela Principal”);
this.setBounds( 50 , 50 , 500 , 500 );
this.setDefaultCloseOperation( 3 );
this.setVisible( true );
}
public static void main( String args[]){
new JPrincipal();
}
}
Utilizando JDesktopPane
Definimos então um JDesktopPane e definimos ele como o container da janela principal:public class JPrincipal extends JFrame{
private JDesktopPane desktop; //declarando um conteiner do tipo JDesktopPane
public JPrincipal(){super(“Janela Principal”);
desktop = new JDesktopPane(); //instanciando nosso desktopthis.setContentPane( desktop ); //definidoo como conteiner da
janela
this.setBounds( 50 , 50 , 500 , 500 );this.setDefaultCloseOperation( 3 );this.setVisible( true );
}public static void main( String args[]){
new JPrincipal();}
}
Utilizando JDesktopPane
Vamos contruir um menu através do método abaixo:public void constroiMenu(){
JMenu arquivo = new JMenu( "Arquivo" );JMenuItem novo = new JMenuItem( "Novo" );novo.setAccelerator( KeyStroke.getKeyStroke(
KeyEvent.VK_N , InputEvent.CTRL_MASK ));novo.addActionListener( this );
JMenuBar barra = new JMenuBar();barra.add( arquivo );arquivo.add( novo );
this.setJMenuBar( barra );}
Utilizando JDesktopPane
Não esquecendo de implementar ActionListener na janela e de adicionar o método constroiMenu no construtor da janela:
public class JPrincipal extends JFrame implements ActionListener{
private JDesktopPane desktop; //declarando um conteiner do tipo JDesktopPaneprivate int contJanela = 0; //Contador de janelas internas
public JPrincipal(){super(“Janela Principal”);
desktop = new JDesktopPane(); //instanciando nosso desktopthis.setContentPane( desktop ); //definidoo como conteiner da janelathis.constroiMenu();this.setBounds( 50 , 50 , 500 , 500 );this.setDefaultCloseOperation( 3 );this.setVisible( true );
}
public void controiMenu(){...
Utilizando JInternalFrame
Agora vamos implementar uma ação para o botão construir janelas internas.
public void actionPerformed(ActionEvent e) { JInternalFrame interna = new JInternalFrame("Janela Interna " +(++contJanelas),
true , true , true , true );
interna.setBounds(10, 10, 100, 100);interna.setVisible( true );desk.add( interna );
}
Isso faz com que a cada vez que clicar no menu novo apareça uma nova janela interna.
API
JIntenalFrameJInternalFrame interna = new JInternalFrame ( String title,
boolean resizable, //se true pode esticar a janela!
boolean closable, //se true pode fechar a janela!
boolean maximizable, //se true pode maximizar a janela!
boolean iconifiable //se true pode minimizar a janala!
)
Exemplo:
JInternalFrame interna = new JInternalFrame(“eu”,true,true,true,true);
APIjanela.show();Mostra, traz pra frente e seleciona a janela.
janela.toFront();Traz a janela pra frente de todas as outras.
janela.toBack();Empurra a janela pra traz de todas as outras.
janela.moveToFront();Traz a janela um nível pra frente.
janela.moveToBack();Empuraa a janela um nível pra trás.
APIJDesktopPaneJDesktopPane desktop = new JDesktopPane( );Cria um painel desktop!
desktop.getAllFrames();Retorna um vetor de JInternalFrame contido no desktop.
desktop.getSelectedFrame();Retorna o JInternalFrame selecionado.
desktop.setSelectedFrame( JInternalFrame interna );Define qual a janela a ser selecionada
desktop.selectFrame( true );Seleciona próxima janela, ou anterior se false.
APIdesktop.removeAll();Remove todas as janelas do desktop.
desktop.setDragMode( int modo )Define como arrasto apenas a borda das janelas se
modo = 1.Define como arrasto toda a janela se modo = 0.
desktop.setComponentZOrder( JInternalFrame i , int o );Específica a posição exata de uma janela interna na coordenadas z.