JFrame Full Screen

Saudações…

Como abrir um Jframe em modo FULL SCREEN e fazer com que ele cubra a barra de tarefas tanto no WIN como no LINUX…

e de quebra gostaria de saber se é possível inserir uma imagem de fundo no JFRAME

valeu por enquanto, :slight_smile:

Tenta assim:

[code]public class MainWindow extends JFrame {
public MainWindow() {
super(“Fullscreen”);
getContentPane().setPreferredSize( Toolkit.getDefaultToolkit().getScreenSize());
pack();
setResizable(false);
show();

SwingUtilities.invokeLater(new Runnable() {
  public void run() {
    Point p = new Point(0, 0);
    SwingUtilities.convertPointToScreen(p, getContentPane());
    Point l = getLocation();
    l.x -= p.x;
    l.y -= p.y;
    setLocation(l);
  }
});

}[/code]

ps.: achei isso no google, não sei se vai funcionar…

T+

fico full screen mas não cubriu a barra de tarefa
e tipo assim os objetos (label, jtext …) que inseri nem aparece na tela

Blz funciona consegui fazer aparecer os objetos…

agora a questão da imagem no fundo do Jframe, alguém teria uma direção para eu chegar na solução desta incognita… :slight_smile:

Você pode adicinar uma imagem a um JLabel, adicionar esse JLabel em um JPanel e depois adicionar esse JPanel no JFrame.

T+

Você também pode usar o modo full screen exclusivo (FSEM), como feito aqui no Vikanoid com esse código do Dave Brackeen:

[code]
public void setFullScreen(DisplayMode displayMode)
{
GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
device = environment.getDefaultScreenDevice();

final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setUndecorated(true);
frame.setIgnoreRepaint(true);
frame.setResizable(false);

device.setFullScreenWindow(frame);

if (displayMode != null && device.isDisplayChangeSupported()) {
setDisplayMode(displayMode);
// fix for mac os x
frame.setSize(displayMode.getWidth(), displayMode.getHeight());
}

frame.createBufferStrategy(2);
sleep(500);
}[/code]

A vantagem é que, além de desabilitar a barra de tarefas e deixar o frame em full screen, você ainda pode escolher a resolução da tela.

Para desativar o full screen, use o seguinte método:

public void restoreScreen() { if (getFullScreenWindow() != null) GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment(); device = environment.getDefaultScreenDevice(); getFullScreenWindow().dispose(); device.setFullScreenWindow(null); }

E para pintar o fundo, você pode usar esse JPanel, que além de suportar a imagem, pode fazer como no fundo do Windows (estica-la, lado-a-lado ou centraliza-la), caso necessário:
http://www.guj.com.br/posts/list/56248.java#295271

Vini…
o que seria a variavel device??

Tchauzin!

Acho que é isso:

http://java.sun.com/j2se/1.4.2/docs/api/java/awt/GraphicsDevice.html

T+

[quote=ViniGodoy]Você também pode usar o modo full screen exclusivo (FSEM), como feito aqui no Vikanoid com esse código do Dave Brackeen:

[code]
public void setFullScreen(DisplayMode displayMode)
{
GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
device = environment.getDefaultScreenDevice();

final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setUndecorated(true);
frame.setIgnoreRepaint(true);
frame.setResizable(false);

device.setFullScreenWindow(frame);

if (displayMode != null && device.isDisplayChangeSupported()) {
setDisplayMode(displayMode);
// fix for mac os x
frame.setSize(displayMode.getWidth(), displayMode.getHeight());
}

frame.createBufferStrategy(2);
sleep(500);
}[/code]

A vantagem é que, além de desabilitar a barra de tarefas e deixar o frame em full screen, você ainda pode escolher a resolução da tela.

Para desativar o full screen, use o seguinte método:

public void restoreScreen() { if (getFullScreenWindow() != null) GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment(); device = environment.getDefaultScreenDevice(); getFullScreenWindow().dispose(); device.setFullScreenWindow(null); }

E para pintar o fundo, você pode usar esse JPanel, que além de suportar a imagem, pode fazer como no fundo do Windows (estica-la, lado-a-lado ou centraliza-la), caso necessário:
http://www.guj.com.br/posts/list/56248.java#295271[/quote]

não acho esse modo muito legal para aplicações, acho que ele é mais voltado para jogos msm onde vc vai pintar a tela manualmente, ou quando vc tem apenas uma tela, tive grandes problemas com isso quando chamava outra tela ele não desenhava corretamente ficava tudo bagunçado.

Pode ter sido algum erro meu tb, não sei, preferi não usar mais desta forma…

prefiro setar o tamanho do jframe na mao msm pegando o tamanho da tela com o toolkit aqui obre a barra de tarefas normalmente.

para setar a imagem vc pode simplesmente sobreescrever o metodo paint tb…

tem um exemplo aki:

http://forum.java.sun.com/thread.jspa?forumID=57&threadID=316074

[quote=diego2005]Acho que é isso:
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/GraphicsDevice.html
T+[/quote]

É isso mesmo. É que na classe real essa variável era um atributo, eu só copiei a criação dela para que o método ficasse completo. Sorry pessoal.

Esse método funciona também para aplicações, mas tenham certeza de manter a opção “setIgnoreRepaint” como true e não false, como no exemplo.

Eu não usaria isso para aplicações com várias telas, a menos que desabilitar a barra do iniciar ou trocar a resolução seja absolutamente necessário.

Ainda assim, talvez haja uma forma melhor de desabilitar o menu iniciar usando JNI e a API dos SOs envolvidos.

[quote=mchiareli]
para setar a imagem vc pode simplesmente sobreescrever o metodo paint tb…[/quote]

De acordo com a documentação do Swing, você deve sobrescrever o método paintComponent no lugar do paint, exceto nas classes onde esse método não existe. Para ver como fazer isso, basta dar uma olhadinha nos fontes do painel que deixei ali em cima. :wink:

ae Diego usei o codigo que vc passou ae , tava procurando por isso ! VAleuZ man!