Resolução do video

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

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:

[code]
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);
}
}[/code]

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

Olha eu aqui d nvo … :slight_smile:
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 …

[code] 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();
	}
}[/code]

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
:slight_smile: