Jump to content


how to use awt/swing with graphics object


  • You cannot reply to this topic
No replies to this topic

#1 beholder

    New Member

  • Members
  • Pip
  • 5 posts

Posted 11 February 2007 - 02:11 PM

I`d like to use both swing components and graphics environment. I`m trying to make a simple game in fullscreen mode. I want to be able to draw bitmaps, custom shapes etc. and use swing/awt stuff like GUI, especially buttons (it would be nice to use the swing components rather than to try to make them myself). So I`ve made so far a fullscreen application that loads a bitmap and displays it on the screen but how can I add eg. a JButton object to this screen? I`d like to be able to add it by specifing it`s position (x,y)...
Here`s the piece of code that I have so far:
public class DawnCrystalMain extends JFrame {
    private ScreenManager screen;
    private Image bgImage, opaqueImage;
    private boolean imagesLoaded;
    //private JPanel content;
       
    public static void main(String[] args) {
 
        DisplayMode displayMode;
        displayMode = new DisplayMode(1024, 768, 16,
                DisplayMode.REFRESH_RATE_UNKNOWN);       
 
        DawnCrystalMain test = new DawnCrystalMain();
        test.work(displayMode);
    }
 
    public void work(DisplayMode displayMode) {           
        setBackground(Color.blue);
        setForeground(Color.white);
        setFont(new Font("Dialog", Font.PLAIN, 24));
        imagesLoaded = false;
 
        screen = new ScreenManager();
        try {
            screen.setFullScreen(displayMode, this);
            loadImages();
            try {
                Thread.sleep(10000);
            }
            catch (InterruptedException ex) { }
        }
        finally {
            screen.restoreScreen();
        }       
    }
 
    public void loadImages() {
        bgImage = new ImageIcon("images/background.jpg").getImage();
        opaqueImage = new ImageIcon("images/opaque.png").getImage();
        imagesLoaded = true;       
        repaint();
    }
 
    public void paint(Graphics g) { 
        if (imagesLoaded) {
            g.drawImage(bgImage, 0, 0, null);
            g.drawImage(opaqueImage, 0, 0, null);           
        }
        else {
            g.drawString("Loading Images...", 5, 24);
        }
    }
}
 
public class ScreenManager {
 
    private GraphicsDevice device;
 
    public ScreenManager() {
        GraphicsEnvironment environment =
            GraphicsEnvironment.getLocalGraphicsEnvironment();
        device = environment.getDefaultScreenDevice();
    }
 
    public void setFullScreen(DisplayMode displayMode, JFrame window)
    {
        window.setUndecorated(true);
        window.setResizable(false);
 
        device.setFullScreenWindow(window);
        if (displayMode != null && device.isDisplayChangeSupported())
        {
            try {
                device.setDisplayMode(displayMode);
            }
            catch (IllegalArgumentException ex) {
                System.err.println("Can`t set display mode for this" +
                                " device. Display mode is: "+displayMode);
            }
        }
    }
 
    public Window getFullScreenWindow() {
        return device.getFullScreenWindow();
    }
 
    public void restoreScreen() {
        Window window = device.getFullScreenWindow();
        if (window != null) {
            window.dispose();
        }
        device.setFullScreenWindow(null);
    }
}






1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users