Bloqueio de Método

5 respostas
gulira

Pessoal alguem tem alguma idéia como funciona ou como se faz um bloqueio de método
igual o JFrame ou JDialog faz com o setVisible(true) ???

5 Respostas

robinsonbsilva

Como assim bloquear método?
Gostaria de ajudar, mas não captei a mensagem… :shock:

Alguns métodos da API do java, quando pressionamos Ctrl + clique mouse(eclipse) ele mostra apenas a assinatura do método. Isso é possivel fazer se vc criar um .jar contendo suas classes, e usa-lo como referencia em um projeto…ai a pessoa só verá mesmo a assinatura!

gulira

robinsonbsilva:
Como assim bloquear método?
Gostaria de ajudar, mas não captei a mensagem… :shock:

Alguns métodos da API do java, quando pressionamos Ctrl + clique mouse(eclipse) ele mostra apenas a assinatura do método. Isso é possivel fazer se vc criar um .jar contendo suas classes, e usa-lo como referencia em um projeto…ai a pessoa só verá mesmo a assinatura!

Oi Robinson deixa eu explicar melhor, estou criando meu internalFrame personalizado utilizando um JPanel e quero que no evento show() desse novo componentes, tivesse o mesmo efeito que o setVisible(true) do JDialog tem para janelas modais. Para que isso? Para que meu fluxo continue somente depois desse meu internalFrame ser fechando.

robinsonbsilva

Agora Ficou melhor…rs
Então, no seu caso vc terá que trabalhar com JInternalFrame Modal…

veja esse link:
http://java.sun.com/developer/JDCTechTips/2001/tt1220.html

Genéricos:
http://www.google.com.br/search?hl=pt-BR&q=exemplo+de+jInternalFrame+modal&meta=

gulira
robinsonbsilva:
Agora Ficou melhor..rs Então, no seu caso vc terá que trabalhar com JInternalFrame Modal..

veja esse link:
http://java.sun.com/developer/JDCTechTips/2001/tt1220.html

Genéricos:
http://www.google.com.br/search?hl=pt-BR&q=exemplo+de+jInternalFrame+modal&meta=

ai que é o grande ponto, eu não posso utlizar JInternalFrame pois nao utilizo Window eu utilizo JPanel.

o meu internalFrame é sobre JPanel e nao sobre Window.

eu achei uma coisa no seu link que vai me dar umas ideias

public void setVisible(boolean value) {
    super.setVisible(value);
    if (value) {
      startModal();
    } else {
      stopModal();
    }
  }

  private synchronized void startModal() {
    try {
      if (SwingUtilities.isEventDispatchThread()) {
        EventQueue theQueue = 
          getToolkit().getSystemEventQueue();
        while (isVisible()) {
          AWTEvent event = theQueue.getNextEvent();
          Object source = event.getSource();
          if (event instanceof ActiveEvent) {
            ((ActiveEvent)event).dispatch();
          } else if (source instanceof Component) {
            ((Component)source).dispatchEvent(
              event);
          } else if (source instanceof 
              MenuComponent) {
            ((MenuComponent)source).dispatchEvent(
              event);
          } else {
            System.err.println(
              "Unable to dispatch: " + event);
          }
        }
      } else {
        while (isVisible()) {
          wait();
        }
      }
    } catch (InterruptedException ignored) {
    }
  }

  private synchronized void stopModal() {
    notifyAll();
  }

Valeu.

gulira

robinsonbsilva:
Agora Ficou melhor…rs
Então, no seu caso vc terá que trabalhar com JInternalFrame Modal…

veja esse link:
http://java.sun.com/developer/JDCTechTips/2001/tt1220.html

Genéricos:
http://www.google.com.br/search?hl=pt-BR&q=exemplo+de+jInternalFrame+modal&meta=

robinsonbsilva eu testei o código aqui e é exatamente o que eu queria.

EventQueue theQueue = 
          getToolkit().getSystemEventQueue();
        while (isVisible()) {
          AWTEvent event = theQueue.getNextEvent();
          Object source = event.getSource();
          if (event instanceof ActiveEvent) {
            ((ActiveEvent)event).dispatch();
          } else if (source instanceof Component) {
            ((Component)source).dispatchEvent(
              event);
          } else if (source instanceof 
              MenuComponent) {
            ((MenuComponent)source).dispatchEvent(
              event);
          } else {
            System.err.println(
              "Unable to dispatch: " + event);
          }
        }

Com isso resolve meu meu problema.

Obrigado pelas dicas.

Criado 28 de janeiro de 2009
Ultima resposta 28 de jan. de 2009
Respostas 5
Participantes 2