Abrir frame, bloqueando quem o chamou

Bom pessoal…
To tentando fazer um primeiro aplicativo em Java.
E queria que ao clicar numa opção do menu, um novo frame fosse aberto, mas que este menu fosse bloqueado, evitando que o usuário abrisse várias novas janelas.
Como fazer isto???
Valeu!

Você quer bloquear o menu só para evitar que o mesmo formulário seja aberto várias vezes?

Se sim implemente um design patter singleton deve resolver seu problema :slight_smile:

Não necessariamente o mesmo form…
Por exemplo, se o usuário abriu o form de clientes, ele terá que fechar este antes de abrir outro, como de fornecedor ou transportadora…
Por isso perguntei como bloquear o menu, pra que nenhum outro form fosse aberto…

Ah entendi, então porque você não usa JDialog e abre como modal? Resolveria o problema também.

Não precisa ser Singleton, um Frame modal já resolverá seu problema.

Os dialogos modais requerem a atenção prioritária do usuário (mensagem de erro, essas coisas). Para utilizar desta carateristica em JAVA viste este tópico: http://www.javafree.org/topic-857078-Como-obrigar-uma-frame-a-ser-modal.html

Os não modais, podem ser acessado ao bel prazer do usuário, a maioria dos Frames são criados já com esta caracteristica.

Em suma é necessario criar um JDialogo e setar ele como moda setModal(true);

abraço.

foi o que eu disse …

Valeu gurizada…
vou tentar isso!
:thumbup:

Cara você poderia fazer desta forma tbm.

quando você abrir o novo frame, você seta o menu.setEnabled(false);, após dar um dispose(); no novo frame seta o menu.setEnable(true);

Não é o mais viavel, mas para quem esta começando é o mais facil.

Nao é possivel fazer um JDialog para JFrame(Nao de um modo simples)

Por isso eu escrevi esse código para criar um JDialog e deixar um JFrame parado.

	public static JDialog createDialog(Component parent, Container content,
			String title) {
		JDialog dialog = null;
		try {
			Method method = JOptionPane.class.getDeclaredMethod(
					"getWindowForComponent", Component.class);
			method.setAccessible(true);
			Window window = (Window) method.invoke(null, parent);
			if (window instanceof Frame)
				dialog = new JDialog((Frame) window, title, true);
			else
				dialog = new JDialog((Dialog) window, title, true);

			dialog.setComponentOrientation(parent.getComponentOrientation());
			dialog.setContentPane(content);
			dialog.pack();
			dialog.setLocationRelativeTo(parent);
		} catch (Throwable t) {
			t.printStackTrace();
		}
		return dialog;
	}

JDialog é um componente então voce tem que setar a visibilidade dele para true para aparecer como se fosse um JFrame normal.