Aplicativo MDI

Olá,

Estou desenvolvendo uma aplicação MDI e gostaria de colocar no menu, um item onde mostra todas as janelas abertas. Alguém já fez isso? Poderiam me ajudar?

Valeu…

vc usa JDesktopPane pra inserir os JInternalFrame certo?
então… o JDesktopPane tem um metodo que retorna um array com todos os JInternalFrame´s que ele possui…
daí é só deixar sua imaginação voar…

[]s

Sim, isso eu já sabia. Meu grande problema está em quando e como adicionar o nome da janela no menu.

Mesmo assim, obrigado.

Fernando

olha cara, QUANDO é uma coisa que pode ser feita de varias formas…
uma delas eh pondo um listener no menu “Janelas” quando vc clica nele…
ai vc faz um loopzinho no array de JInternalFrame listando o nome de cada um deles… usa sei la… deve ter um metodo getTitle(), sei la…
eu to meio enrolado aki pra ver isso pra vc… mas o caminho eh esse…
JDesktopPane com o array de JInternalFrame´s e os metodos do JInternalFrame… com certeza rsolvará seu problema…

desculpe num poder ajudar mais!
[]s

Ôpa!

Por estes dias eu tava brincando com Java aqui e quis fazer exatamete isso… então ficou:

implementar o evento addContainerListener do JDesktopPane:

					painelPrincipal.addContainerListener(new ContainerListener(){

						public void componentAdded(ContainerEvent arg0) {
								inserirMenuItem(arg0);
						}
						public void componentRemoved(ContainerEvent arg0) {
							removerMenuItem(arg0);
						}
					});

O método inserirMenuItem hé o cara que faz toda sacanagem:


	public void inserirMenuItem(final ContainerEvent containerEvent){
		JCheckBoxMenuItem  menuItem = new JCheckBoxMenuItem (((JInternalFrame)painelPrincipal.getComponent(painelPrincipal.getComponentCount()-1)).getTitle());
		menuItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				try {
					((JInternalFrame)containerEvent.getChild()).setSelected(true);
				} catch (PropertyVetoException e) {
					e.printStackTrace();
				}
			}
		});
		menuJanelasAbertas.add(menuItem);
		menuItem.setSelected(true);
	}

Agora independente da janela que você abrir e adicionar no JDesktopPane ele será inserido no MenuJanela e você poderá alterar de janela de acordo com os itens abertos. Tem alguma coisa que pode ser melhorada mas a idéia hé esta.

Para retirar o item de menu quando fechar o JInternalFrame hé só implementar o método percorrendo todos os MenuItens adicionados no MenuJanela e verificar qual hé o referente ao que você quer remover e retirar ele!

Falow!