PDA

View Full Version : how to use awt/swing with graphics object


beholder
02-11-2007, 06:11 AM
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);
}
}