[quote=ThankChenus]opa…
bom… primeiro vamos ao meu codigo…
eu adicionei essa linha que vc falou e …ele nem entra dentro do if…retorna false esse metodo…
só pra testar coloquei assim:
if (device.isDisplayChangeSupported()) {
DisplayMode originalDM = device.getDisplayMode();
// testes de fullscreen em 640,480
DisplayMode[] modes = device.getDisplayModes();
for(int x=0 ; x <modes.length;x++){
System.out.println(modes[x].getWidth());
System.out.println(x);
device.setFullScreenWindow(f);
device.setDisplayMode(modes[11]);
System.out.println("TESTE");
max.addActionListener(new MyActionListener(device,originalDM));
}}
e ele nem exibiu o “TESTE”…outra coisa…a parte
// depois pra voltar ao normal por um button
device.setDisplayMode(originalDM);
fica dentro de um listener…que só executa quando eu clico no botao …e o demo da sun eu clico pra mudar de resolução na mesma velocidade que faço no meu teste… e mesmo assim só no meu teste da outOfMemory
vc teria ai um codigo limpo…só com a parte que muda de resolução?
geralmente eu consigo abstrair só a parte que eu vou usar dos demos da sun…mas nessa me pareceu muito bagunçado…ta cheio de Table, JPanes e metodos pra transformar o retorno deles em DisplayChanges que eu acabei me confundindo…
o mais legal de tudo é que o demo usa o isDisplayChangeSupported que retorna true…e o meu false…
eu ja ia esquecendo…eu uso Slackware 12.1 + KDE/fluxbox, e eu desativo o compiz quando vou usar o eclipse, alias quase nunca uso o compiz…só quando vem gente em casa hehehe…[/quote]
:lol: Só quando vem gente em casa é muito boa…
Quanto ao seu problema, se o método retorna false, ou temos algum problema de configuração ou seu computador está meio “fraquinho” mesmo. Só será possível mudar a resolução se o método retornar true. Mas o mais estranho de tudo é que o exemplo da Sun funciona no seu PC…
Teste esse código aqui e poste os resultados:
package swing;
import java.awt.DisplayMode;
import java.awt.FlowLayout;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.TreeMap;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public class FullScreen extends JFrame {
private static final long serialVersionUID = 1L;
private JComboBox comboBox;
private GraphicsDevice device;
private TreeMap<String, DisplayMode> displayModesMap;
public FullScreen() {
super();
initGUI();
}
public static void main(String[] args) {
new FullScreen();
}
private JComboBox getComboBox() {
if (comboBox == null) {
comboBox = new JComboBox(getDisplayModesMap().keySet().toArray());
comboBox.setSelectedIndex(-1);
comboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
mudaResolucao();
}
});
}
return comboBox;
}
private GraphicsDevice getDevice() {
if (device == null) {
device = GraphicsEnvironment.getLocalGraphicsEnvironment()
.getDefaultScreenDevice();
}
return device;
}
private TreeMap<String, DisplayMode> getDisplayModesMap() {
if (displayModesMap == null) {
displayModesMap = new TreeMap<String, DisplayMode>();
String name = null;
for (DisplayMode dm : getDevice().getDisplayModes()) {
name = String.format("%d, %d, %d, %d", dm.getWidth(), dm
.getHeight(), dm.getBitDepth(), dm.getRefreshRate());
displayModesMap.put(name, dm);
}
}
return displayModesMap;
}
private void initGUI() {
setLayout(new FlowLayout(FlowLayout.CENTER, 5, 30));
add(getComboBox());
setUndecorated(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
if (getDevice().isFullScreenSupported()) {
getDevice().setFullScreenWindow(this);
} else {
System.err.println("Modo tela cheia não suportado!");
dispose();
}
}
private void mudaResolucao() {
if (getDevice().isDisplayChangeSupported()) {
getDevice().setDisplayMode(
getDisplayModesMap().get(getComboBox().getSelectedItem()));
} else {
System.err.println("Não é possível mudar a resolução!");
dispose();
}
}
}