curso de java – aula 10

12
 Curso de Java – Aula 10 JDesktopPane JInternalFrame Ivo Augusto Fontana Bertoncello Marcelo de Oliveira Dias

Upload: eduardo-pereira

Post on 21-Apr-2015

57 views

Category:

Documents


4 download

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 consegue­se 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.  

   

Utilizando­os

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 );  //definido­o 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 );  //definido­o 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.