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
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.