Resolução do video

3 respostas
silva.fernandes

Pessoal, estou desenvolvendo uma aplicação, porem eu queria
“forçar” todos que forem utiliza-las a usar a 1024 x 768.

Tem como fazer isso ? verificar a resolução do vídeo e se ela não for
a indicada auterá-la automáticamente … e assim que a aplicação
fechar voltar a resolução que estava ?

Será que estou viajando na batatinha ? :lol:

Valeuuuu

3 Respostas

ViniGodoy

Tem sim, mas você terá que ver se o modo de vídeo é suportado.

Em anexo coloquei uma classe chamada ScreenManager, que uso no Vikanoid. Além de trocar a resolução, ela pode ser usada para usar o modo full screen exclusivo.

Use a função findFirstCompatibleMode para verificar, na lista de display modes que você quer, qual dos modos que você quer colocar é compatível com os suportados pelo monitor de seu usuário.

Depois, use o comando isDisplayChangeSupported para verificar se você pode trocar de resolução. O seu usuário pode não ter esse tipo de privilégio.

Finalmente, use o comando setDisplayMode para fazer a troca propriamente dita. O código fica mais ou menos assim:

public switchVideoMode() {
   //Queremos 1024x68, em 32, 24 ou 16 bits.
   DisplayMode displayModes[] = {
      new DisplayMode(1024, 768, 32, 0), 
      new DisplayMode(1024, 768, 24, 0),
      new DisplayMode(1024, 768, 16, 0) 
   };

   DisplayMode mode = ScreenManager.getInstance().findFirstCompatibleMode(displayModes);
   if (ScreenManager.getInstance().isDisplayChangeSupported)
      ScreenManager.getInstance().setDisplayMode(mode);
   else {
      JOptionPane.showMessageDialog("Não foi possível alterar a resolução");
      System.exit(1);
   }
}
ViniGodoy

Para mais informações:
http://java.sun.com/docs/books/tutorial/extra/fullscreen/displaymode.html
http://fivedots.coe.psu.ac.th/~ad/jg/ch03/index.html

silva.fernandes

Olha eu aqui d nvo ... :)
Obrigado Vini pelas informações, ajudou bastante ...

Porem oq eu quero é apenas alterar a resolução do monitor atraves da minha aplicação Java, ou seja, não quero trabalhar em Full Screen.

Então vendo o material q vc me mandou e olhando a documentação do Jdk 1.5, vi que o método setDisplayMode da classe DisplayMode faria isso. Porem ele informa que que a resolução não pode ser alterada ...

Será que estou errando em alguma coisa ... esse é o código ...
GraphicsEnvironment ge = GraphicsEnvironment
				.getLocalGraphicsEnvironment();
		GraphicsDevice gs = ge.getDefaultScreenDevice();

		// Change the screen size and number of colors
		DisplayMode displayMode = gs.getDisplayMode();
		displayMode = new DisplayMode(1024, 768, 32, 60);
		try {
			gs.setDisplayMode(displayMode);
			Thread.sleep(500);
		} catch (UnsupportedOperationException e) {
			System.out.println("Display mode cannot be changed");
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
Para ficar mais facil, eu coloquei aquela exceção que é lançada quando o método isDisplayChangeSupported() retorna false. Então ele lança a seguinte exceção:
java.lang.UnsupportedOperationException: Cannot change display mode
	at java.awt.GraphicsDevice.setDisplayMode(GraphicsDevice.java:338)
	at sun.awt.Win32GraphicsDevice.setDisplayMode(Win32GraphicsDevice.java:427)
A resolução não poder ser alterada .... Cannot change display mode

Alguem ja tentou fazer isso e obteve sucesso é puder dar uma mãozinha ...

Grato
:)

Criado 3 de maio de 2007
Ultima resposta 7 de mai. de 2007
Respostas 3
Participantes 2