Hey folks. I'm using the latest dev version of Slick using JDK 1.7 and Netbeans to build my project. I'm working on a Windows 7 64-bit system with a dual monitor setup. Primary screen is 1920x1080 resolution oriented on the right side. My secondary screen is 1600x900 resolution oriented on the left. I'm building a sprite editing tool that will probably not make a public release using Swing and CanvasGameContainer to show animation. I'm not going to switch to TWL or any other OpenGL only solutions.
The trouble I'm having is when I maximize my window on my secondary screen, Slick crashes and I'm left with an empty window. The window still operates and the program quits successfully. This also happens when I resize the window and make it larger on my secondary screen. This does not occur when I use my primary screen. I made a test case to show this:
TestGame.java
Code:
package slickguitest;
import org.newdawn.slick.*;
public class TestGame extends BasicGame {
public TestGame(String name) {
super(name);
}
@Override
public void init(GameContainer container) throws SlickException {
}
@Override
public void update(GameContainer container, int delta) throws SlickException {
}
@Override
public void render(GameContainer container, Graphics g) throws SlickException {
g.setColor(Color.gray);
g.fillRect(0.0f, 0.0f, container.getWidth(), container.getHeight());
}
}
Main.java
Code:
package slickguitest;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.GroupLayout;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import org.newdawn.slick.CanvasGameContainer;
import org.newdawn.slick.SlickException;
public class Main extends javax.swing.JFrame {
private JPanel pnl_animationPanel;
private CanvasGameContainer canvasGC;
public Main() {
initComponents();
try {
canvasGC = new CanvasGameContainer(new TestGame("test"));
canvasGC.getContainer().setAlwaysRender(true);
canvasGC.setMinimumSize(new Dimension(0, 0));
canvasGC.start();
pnl_animationPanel.add(canvasGC);
} catch (SlickException ex) {
Logger.getLogger(TestJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void initComponents() {
pnl_animationPanel = new JPanel();
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
pnl_animationPanel.setBackground(new Color(255, 0, 0));
pnl_animationPanel.setLayout(new GridLayout(1, 0));
GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(pnl_animationPanel, GroupLayout.DEFAULT_SIZE, 813, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(pnl_animationPanel, GroupLayout.DEFAULT_SIZE, 537, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new Main().setVisible(true);
}
});
}
}
And this is the error message that I get:
Code:
run:
Wed May 23 23:30:10 PDT 2012 INFO:Slick Build #236
Wed May 23 23:30:10 PDT 2012 INFO:LWJGL Version: 2.8.2
Wed May 23 23:30:10 PDT 2012 INFO:OriginalDisplayMode: 1920 x 1080 x 32 @60Hz
Wed May 23 23:30:10 PDT 2012 INFO:TargetDisplayMode: 500 x 500 x 0 @0Hz
Wed May 23 23:30:10 PDT 2012 INFO:Starting display 500x500
Wed May 23 23:30:10 PDT 2012 INFO:Use Java PNG Loader = true
Wed May 23 23:30:10 PDT 2012 INFO:Starting display 813x537
Wed May 23 23:30:12 PDT 2012 ERROR:Unable to setup mode 1576x854 fullscreen=false
org.newdawn.slick.SlickException: Unable to setup mode 1576x854 fullscreen=false
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Cannot determine minimized state of uncreated window
at org.newdawn.slick.AppGameContainer.setDisplayMode(AppGameContainer.java:207)
at org.newdawn.slick.CanvasGameContainer$Container.checkDimensions(CanvasGameContainer.java:195)
at org.newdawn.slick.CanvasGameContainer$2.run(CanvasGameContainer.java:104)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: org.lwjgl.LWJGLException: Could not make context current
at org.lwjgl.opengl.WindowsContextImplementation.nMakeCurrent(Native Method)
at org.lwjgl.opengl.WindowsContextImplementation.makeCurrent(WindowsContextImplementation.java:94)
at org.lwjgl.opengl.Display.isVisible(Display.java:584)
at org.lwjgl.opengl.ContextGL.makeCurrent(ContextGL.java:194)
at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:450)
at org.lwjgl.opengl.DrawableGL.makeCurrent(DrawableGL.java:110)
at org.newdawn.slick.CanvasGameContainer$2.run(CanvasGameContainer.java:100)
at org.lwjgl.opengl.Display.makeCurrent(Display.java:731)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at org.lwjgl.opengl.Display.makeCurrentAndSetSwapInterval(Display.java:1050)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at org.lwjgl.opengl.Display.setDisplayMode(Display.java:251)
at org.newdawn.slick.AppGameContainer.setDisplayMode(AppGameContainer.java:188)
at java.awt.EventQueue.access$000(EventQueue.java:101)
... 16 more
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
BUILD SUCCESSFUL (total time: 6 seconds)
Any help would be apperciated. Also, it would be really nice if this forum could minimize code blocks for readability.