Solved

Java Fullscreen Application

Posted on 2004-03-21
4
2,915 Views
Last Modified: 2012-06-27
Ok, I'm building a Java App in fullscreen mode. I've got the fullscreen mode working on a JFrame object with a JPanel added to it for content. What I need to know is how to swap the JPanel for a different one without dropping out of fullscreen mode. I suspect this has something to do with the BufferStrategy class, but I can't get it to work.

Here's what I've got so far, with a MyPanel jsut being a simple JPanel with an image and a settable background color. It should show the red one, wait around for a sec, then show the blue one. Currently it jsut shows the red one then a blank screen.

public static void main(String args[]) {
      try {
                GraphicsDevice screen = screenSetup();
            DisplayMode dmode = new DisplayMode(800, 600, 32, DisplayMode.REFRESH_RATE_UNKNOWN);
            JFrame frame = makeFrame();

            MyPanel pan1 = testPanel(Color.RED);
            MyPanel pan2 = testPanel(Color.BLUE);

              Container conpane = frame.getContentPane();
            conpane.add(pan1, BorderLayout.CENTER);

            screen.setFullScreenWindow(frame);
            screen.setDisplayMode(dmode);

            frame.createBufferStrategy(2);
            BufferStrategy bufstrat = frame.getBufferStrategy();
            Graphics g = bufstrat.getDrawGraphics();

            Thread.sleep(6000);
            Rectangle bounds = frame.getBounds();
            javax.swing.SwingUtilities.paintComponent(g, pan2, conpane, bounds);
            bufstrat.show();

      } catch (Exception ex) {
            ex.printStackTrace();
      }
}

Thanx.
0
Comment
Question by:Ulfsark
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
4 Comments
 

Author Comment

by:Ulfsark
ID: 10643346
Oh, sorry, here's the rest of the methods if they help.

      private static GraphicsDevice screenSetup() {
            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            GraphicsDevice[] gs = ge.getScreenDevices();
            GraphicsDevice gdev = gs[0];
            return gdev;
      }

/*****************************************************************************/

      public static JFrame makeFrame() {
            JFrame frame = new JFrame();
            frame.setUndecorated(true);
            return frame;
      }

/*****************************************************************************/

      public static MyPanel testPanel(Color c) {
            MyPanel panel = new MyPanel();
            panel.setBackground(c);
            JLabel lab = new JLabel(new ImageIcon("images/loading-screen.gif"));
            panel.add(lab, BorderLayout.CENTER);
            return panel;
      }
0
 
LVL 30

Expert Comment

by:GrandSchtroumpf
ID: 10643440
you can use something like this:
          conpane.remove(pan1);
          conpane.add(pan2, BorderLayout.CENTER);
0
 
LVL 30

Accepted Solution

by:
GrandSchtroumpf earned 125 total points
ID: 10643622
here is a class that demonstrates how to switch between 2 panels in full screen.
clicking the button switches the panels.

in the main method, you can use the showFrame() method instead of the fullScreen() to show your frame in normal mode (normal = not-full-screen).

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.image.BufferStrategy;

class PanelTest implements ActionListener {

  JFrame frame = new JFrame();
  JPanel pan1 = new JPanel();
  JPanel pan2 = new JPanel();
  JButton button1 = new JButton("Button One");
  JButton button2 = new JButton("Button Two");
  boolean containsPan1 = false;
 
  public void showFrame() {
    frame.pack();
    frame.setVisible(true);
  }

  public PanelTest() {
    pan1.setBackground(Color.RED);
    pan2.setBackground(Color.BLUE);
    pan1.add(button1);
    pan2.add(button2);
    button1.addActionListener(this);
    button2.addActionListener(this);
    switchPanel();
  }

  public void switchPanel() {
    frame.getContentPane().removeAll();
    JPanel toadd = (containsPan1)? pan1 : pan2;
    containsPan1 = !containsPan1;
    frame.getContentPane().add(toadd, BorderLayout.CENTER);
    frame.validate();
    toadd.repaint();
  }

  public void actionPerformed(ActionEvent e) {
    switchPanel();
  }

  public void fullScreen() {
    frame.setUndecorated(true);
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice[] gs = ge.getScreenDevices();
    GraphicsDevice gdev = gs[0];
    gdev.setFullScreenWindow(frame);
  }

  public static void main(String args[]) {
    PanelTest test = new PanelTest();
    test.fullScreen();
    //test.showFrame();
  }

}
0
 
LVL 30

Expert Comment

by:GrandSchtroumpf
ID: 10645153
:°)
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
V.simple question about Android packages and libraries 1 46
Eclipse Java import and method not resolved 4 135
swing controls 2 37
maximize the sum of fractions 33 76
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
In this post we will learn different types of Android Layout and some basics of an Android App.
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
The viewer will learn how to implement Singleton Design Pattern in Java.
Suggested Courses

738 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question