Jump to content

  • Log In with Google      Sign In   
  • Create Account


Which prefer layout would help my game canvas?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

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

#1 warnexus   Prime Members   -  Reputation: 1381

Like
0Likes
Like

Posted 08 February 2013 - 11:17 PM

So I ran into some rather interesting problems. I have been playing around with the same three layouts that I learned in my introductory java course last year: BorderLayout, FlowLayout and GridLayout for a good hour in the game I have been developing for the past month.

 

None of the three layouts are very nice to my game canvas. The reason, is the right-half portion of the game canvas gets obscured which I also do not know how to solve. I think the one layout that did the least amount of damage to my game canvas out of the three is BorderLayout which is the one depicted in this picture below. Although, from a user standpoint, you can see BorderLayout still hurts the gameplay experience of my arcade shooter clone.

 

The heart image and the life image are both JLabel objects. The middle is the game canvas(from what I seen BorderLayout seems to have messed up my game canvas). The source code is posted at the bottom-most. 

 

I know I am doing this wrong but I think I struggle enough. mellow.png  Perhaps I need to use a layout I have not been taught? rolleyes.gif

 

Here is what the game looks if it uses BorderLayout:

javaLayout_zps51059ee0.jpg

 

If my game canvas was left alone with no layout it would look nice like this:

javaBorderLayout_zpsd87ea07a.jpg

 

public class Game extends Canvas{

 

     private JPanel panel;

 

     private Game(){

 

     panel = (JPanel)container.getContentPane();

        
        panel.setPreferredSize(new Dimension(width,height));
 
        panel.setLayout(new BorderLayout());
        // add canvas to panel
        panel.add(this,BorderLayout.CENTER);
        
        ShipLifeTitle shipLifeTitle = null;
        try {
            shipLifeTitle = new ShipLifeTitle();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        panel.add(shipLifeTitle,BorderLayout.EAST);
        
        ShipLifeHeart shipLifeHeart = null;
        try{
            shipLifeHeart = new ShipLifeHeart();
        }catch(IOException e)
        {
            e.printStackTrace();
        }
        
        panel.add(shipLifeHeart,BorderLayout.WEST);
        
        //shipLifeTitle.setPreferredSize(new Dimension(shipLifeTitle.getImage().getWidth(null),shipLifeTitle.getImage().getHeight(null)));
        //panel.add(shipLifeTitle.getImage(),BorderLayout.SOUTH);
 
                
        container.setLocation(300, 200);
        setBounds(0,0,width,height);
        container.pack();
        
        
        container.setResizable(false);
        container.setVisible(true);
 

 

     }

 

}

 

 

public class ShipLifeTitle extends JLabel {
 
    public ShipLifeTitle() throws IOException{
        ImageIcon icon = new ImageIcon("src/Ship/shipLifeTitle.png");
        setIcon(icon);
    }
}
 
public class ShipLifeHeart extends JLabel {
 
    public ShipLifeHeart() throws IOException{
        ImageIcon icon = new ImageIcon("src/Ship/shipLifeHeart.png");
        setIcon(icon);
        
    }
}
 

Edited by warnexus, 08 February 2013 - 11:21 PM.


Sponsor:

#2 Barzai   GDNet+   -  Reputation: 577

Like
1Likes
Like

Posted 10 February 2013 - 01:00 PM

Here's a link to the layout tutorial that the Oracle folks made:

http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html

 

They recommend just using netbeans.  I haven't actually used that yet, so I don't know how effective it is.  Otherwise they recommend grouplayout or gridbaglayout.

 

Personally I've had a lot of luck with BoxLayout.  BoxLayout tends to prefer to support the default sizes of components, so it doesn't do some of the weird resizing things some of the other layout setups do.  To get more intricate layouts, though, you have to make yourself a hierarchical box structure.  That's actually sort of the way I tend to set stuff up when I code javascript as well, though, so it flows pretty naturally for me.

 

Good luck

 

*Edit part*

I just had a thought.  It might work out well for what you're making to just move your UI display stuff into your canvas.  Then you wouldn't need to bother with the layout managers at all.


Edited by Barzai, 10 February 2013 - 01:21 PM.


#3 warnexus   Prime Members   -  Reputation: 1381

Like
0Likes
Like

Posted 10 February 2013 - 01:23 PM

Here's a link to the layout tutorial that the Oracle folks made:

http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html

 

They recommend just using netbeans.  I haven't actually used that yet, so I don't know how effective it is.  Otherwise they recommend grouplayout or gridbaglayout.

 

Personally I've had a lot of luck with BoxLayout.  BoxLayout tends to prefer to support the default sizes of components, so it doesn't do some of the weird resizing things some of the other layout setups do.  To get more intricate layouts, though, you have to make yourself a hierarchical box structure.  That's actually sort of the way I tend to set stuff up when I code javascript as well, though, so it flows pretty naturally for me.

 

Good luck

 

*Edit part*

I just had a thought.  It might work out well for what you're making to just move your UI display stuff into your canvas.  Then you wouldn't need to bother with the layout managers at all.

Thanks for the link. I got it to work!



#4 Barzai   GDNet+   -  Reputation: 577

Like
0Likes
Like

Posted 10 February 2013 - 01:28 PM

Hooray!  Glad to help.

 

Cheers






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS