JDialog

7 respostas
L

Fala pessoa!!
To com a seguinte duvida: eu tenho uma tela que chama um dialog, como faço pra que o dialog abra exatamente no meio da tela sobrepondo a tela que o chama? O meu dialog abre sempre no canto superior direito.

Obrigado!! Abç!!

7 Respostas

arochafademac

É identico à centralizar um JFrame, basta adicionar uma linha:
Se sua classe extende um JDialog:

public sua classe extends JDialog(){
   public sua classe() {
            setLocationRelativoTo(null);
  }
}

Agora se ela é aberta em um novo jFrame basta fazer assim:

public sua classe extends JDialog(){
   public sua classe(JFrame parent, boolean modal){
      parent.setLocationRelativeTo(null);
      super(parent, modal);
    }
}

Espero ter ajudado

Andre

fabiel

CAra eu fiz este metodo que vc regula o tamanho e onde vai aparecer.
da uma olha e ve se tu enetende eh bm simples

public void alinha() {
		Toolkit tk = Toolkit.getDefaultToolkit();
		Dimension screenSize = tk.getScreenSize();
		int screenHeight = screenSize.height;
		int screenWidth = screenSize.width;
		setSize((int) (screenWidth / 2), (int) (screenHeight / 2.3));
		setLocation((int) (screenWidth / 3.7), (int) (screenHeight / 3.8));
	}
arochafademac

Desculpe…uma correção…para os dois casos funciona apenas fazer como no primeiro exemplo.

arochafademac

Este metodo tambem funciona mas o setLocationRelativeTo(null) economiza boas linhas e dores de cabeça com coisas tipo “getSize” ou “getPreferedSize”…
Entende?

fabiel

cara nao entendi nada do seu comentario

arochafademac

Acontece bastante com quem usa o Matisse do netbeans ou do myeclipse para gerar os forms…
Ele parametriza o size diferente do preferedSize oque acaba gerando uma dorzinha de cabeça escrevendo codigo para ter certeza do tamanho exato…Muitas veses você tenta recuperar o Size mas ele está diferente doque realmente está na tela…, e muitas veses até o PreferedSize está errado, pois ele no fim das contas se baseia em um parametro DesignerSize…, claro que esta dica não serve de nada para quem faz os forms na mão…
Mas o importante é que se dê preferencia ao setLocationRelativeTo(null), pois ele garante o posicionamento no centro da tela independente das medidas do form.

fabim

pq vc nao cria algo como um GeneralDialog, e faz todos seus Dialogs herdarem dele?

ai tu poe nele as caracteristicas que devem existir em todos os Dialogs ( ex: centralizar )

[]s

Criado 27 de junho de 2007
Ultima resposta 27 de jun. de 2007
Respostas 7
Participantes 4