Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / First Aid / October 2006

Tip: Looking for answers? Try searching our database.

Need help with JFrame app

Thread view: 
Tag - 30 Oct 2006 06:01 GMT
ok im trying to create basically a tic tac toe game in java. However im
having a bit of trouble with the basics, being new to java and all.
What ive done is create a class called XOPanel, that creates a array of
objects called XOSquare. XOPanel creates a window and what i want it to
do is draw a 3x3 gris on this window and fill each of these spaces with
its coresponding XOSquare. Each XOSquare is just a JPanel i want
created so that  later on an X or O will be drawn to it. However right
now my window pops up, but im unsure how to get the array to draw, or
how to fill each position with its XOSquare. Heres what i ahve so far:

XOPanel:

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class XOPanel extends JPanel implements MouseListener {

    private int squareSize;
    private XOSquare[][] boardArray;
    private int width = 400, height = 400;

    public XOPanel(){
        boardArray = new XOSquare[3][3];
        setSize(width, height);
    }

    private void paintComponet(Graphics g){
        super.paintComponent(g);
        int paneHeight = this.getHeight();
       int paneWidth  = this.getWidth();
       if (paneHeight < paneWidth)
         squareSize = paneHeight / 3;
       else
         squareSize = paneWidth / 3;

       for (int row=0; row<3; row++){
           for (int col=0; col<3; col++){
               g.drawRect(col*squareSize, row*squareSize, squareSize,
squareSize);
           }
       }
    }

    public static void main(String[] args){
        JFrame f = new JFrame("Test");
        XOPanel xoPanel = new XOPanel();
        f.getContentPane().add(xoPanel);
        f.setSize(xoPanel.width, xoPanel.height);
        f.setVisible(true);
        f.addWindowListener
         ( new WindowAdapter()
           { public void windowClosing(WindowEvent e)
             { System.exit(0);
             }
           }
         );

    }

XOSquare:

import java.awt.Rectangle;

public class XOSquare extends Rectangle {

    public XOSquare(int width, int height){
        this.setSize(width, height);
    }
}

im hoping you guys can help.
Thomas Weidenfeller - 30 Oct 2006 09:59 GMT
> XOPanel creates a window and what i want it to
> do is draw a 3x3 gris on this window and fill each of these spaces with
> its coresponding XOSquare. Each XOSquare is just a JPanel

Here you go likely wrong.

With JPanel one either uses

1) JPanel + Java 2D graph drawing

or

2) JPanel + LayoutManager + Components (incl. additional JPanels)

For graphics one typically uses option 1): Completely drawing the
contents of the JPanel with the Java 2D API, instead of placing
additional panels on the main JPanel.

Mixing option 1) and 2) on the same JPanel is often not a good idea. You
easily end up in all sorts of unpleasant hacks.

/Thomas

Signature

The comp.lang.java.gui FAQ:
http://gd.tuwien.ac.at/faqs/faqs-hierarchy/comp/comp.lang.java.gui/
ftp://ftp.cs.uu.nl/pub/NEWS.ANSWERS/computer-lang/java/gui/faq



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.