Re: Need some help.....
TheBigPJ wrote:
My problem is that it wont display the given image, can anyone tell me
what thing ive done wrong or missed. I changed something and I cant
remember what..... its going to be one thing that needs to be changed
back :S
It only displays a small white box inside a JFrame that is the colour
I want it to be.
theCAS_Engine works perfectly. Like I said I changed something last
night and forgot to run it to check it worked and now it doesnt
work :S
Thanks,
Peter
------------------------------------------
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
public class CAS_Interface extends JPanel implements MouseListener{
CAS_Engine theCAS_Engine;
boolean running;
public static void main(String[] args)
{
JFrame mainWindow = new JFrame("CASAT - Connect a Square on a
Tesseract (Multiplayer)");
JPanel content = new JPanel();
content.add(new CAS_Interface(), BorderLayout.WEST);
mainWindow.setContentPane(content);
mainWindow.getContentPane().setBackground(new Color(176,196,222));
mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWindow.setLocationRelativeTo(null);
mainWindow.pack();
mainWindow.setVisible(true);
}
public void CAS_Interface()
{
setPreferredSize(new Dimension(600,471));
setBackground(new Color(173,216,230));
addMouseListener(this);
theCAS_Engine = new CAS_Engine();
running = true;
repaint();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if (running) {
drawScreen((Graphics2D) g);
}
}
public void drawScreen(Graphics2D g)
{
//Uses the game board as defined in the program specification
Image image = Toolkit.getDefaultToolkit().getImage("./map.png");
g.drawImage(image, 0,0,this);
// Creates the custom buttons: "New Game", "Play AI", Enter Names,
// Change Colours and Leave Game
// Start of custom buttons
g.setColor(new Color(0,191,255));
g.fillRect(450, 25, 150, 30);
g.fillRect(450, 405, 150, 30);
g.fillRect(450, 80, 150, 30);
g.fillRect(450, 135, 150, 30);
g.fillRect(450, 190, 150, 30);
g.setColor(new Color(50,241,255));
g.drawRect(450, 25, 150, 30);
g.drawRect(450, 80, 150, 30);
g.drawRect(450, 135, 150, 30);
g.drawRect(450, 190, 150, 30);
g.drawRect(450, 405, 150, 30);
g.setColor(new Color(0,0,205));
g.setFont(new Font("Times New Roman",Font.BOLD, 16));
g.drawString("New Game", 460, 45);
g.drawString("Play AI", 460, 100);
g.drawString("Enter Names", 460, 155);
g.drawString("Change Colours", 460, 210);
g.drawString("Leave Game", 460, 426);
//End of custom buttons
//This checks to see what moves have been made and by who
//start of procedure
for(int i = 1; i<17;i++)
{
System.out.println(theCAS_Engine.getSpotInformation(i));
if(! (theCAS_Engine.getSpotInformation(i) == 0))
{
//Find the colour of the player who choose that spot
g.setColor(theCAS_Engine.getPlayersColor(theCAS_Engine.getSpotInformation(i)
== 1 ));
//Fill in the appropiate spot
if(i == 1)
{
g.fillOval(2,62,12,12);
}
else if(i == 2)
{
g.fillOval(250,4,12,12);
}
else if(i == 3)
{
g.fillOval(416,121,12,12);
}
else if(i == 4)
{
g.fillOval(124,213,12,12);
}
else if(i == 5)
{
g.fillOval(102,139,12,12);
}
else if(i == 6)
{
g.fillOval(223,106,12,12);
}
else if(i == 7)
{
g.fillOval(297,172,12,12);
}
else if(i == 8)
{
g.fillOval(166,213,12,12);
}
else if(i == 9)
{
g.fillOval(106,248,12,12);
}
else if(i == 10)
{
g.fillOval(222,212,12,12);
}
else if(i == 11)
{
g.fillOval(290,286,12,12);
}
else if(i == 12)
{
g.fillOval(168,329,12,12);
}
else if(i == 13)
{
g.fillOval(31,284,12,12);
}
else if(i == 14)
{
g.fillOval(245,214,12,12);
}
else if(i == 15)
{
g.fillOval(380,354,12,12);
}
else if(i == 16)
{
g.fillOval(137,455,12,12);
}
}
}
//If the game is finished then display the winner
//Start of game Finished
if(theCAS_Engine.getisTheGameFinished())
{
//Place a transparent blanket over the board
AlphaComposite ac =
AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f);
g.setComposite(ac);
g.setColor(Color.blue);
g.fillRect(0,0,432,471);
//Turn the transparency off for the displaying of the winner
information
ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0f);
g.setComposite(ac);
g.setColor(Color.green);
g.setFont(new Font("Times New Roman",Font.BOLD, 32));
g.drawString("Game Over", 150, 200);
//Check who won and display there name in there colour
switch(theCAS_Engine.checkWon())
{
case 0:
g.drawString("No Winner!", 145, 250);
break;
case 1:
g.setColor(theCAS_Engine.getPlayersColor(true));
g.drawString(theCAS_Engine.getPlayersName(true) + " Wins!", 130,
250);
break;
case 2:
g.setColor(theCAS_Engine.getPlayersColor(false));
//Check if player 2 was the AI
if(theCAS_Engine.getisAIPlaying())
{
g.drawString("AI WINS!!!", 130, 250);
}
else
{
g.drawString(theCAS_Engine.getPlayersName(false) + " Wins!",
130, 250);
}
}
//End of Game Finished
}
}
Since all the code isn't here we can't compile it so it is very
difficult to know what is actually causing your problem. I can tell you
this, that calling Toolkit.getImage() in the paintComponent() method is
not a good idea. Whether that can cause it to not draw I don't know.
Speaking of that, createImage() is preferred over getImage() as
getImage() causes the image to be cached. If you are using a modern
compiler, 1.4 or later, then you should use ImageIO class methods to
load images.
I do have a question, why do you create a JPanel to add this JPanel to
and set that panel as the content pane rather than just adding this
JPanel to the JFrame?
--
Knute Johnson
email s/nospam/linux/
--
Posted via NewsDemon.com - Premium Uncensored Newsgroup Service
------->>>>>>http://www.NewsDemon.com<<<<<<------
Unlimited Access, Anonymous Accounts, Uncensored Broadband Access