(WindowListener+paint) issue

i tried this but it didn't work .. i wanna draw a smiley face when the window is active and a sad face when it's not .. olz any help !!

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

publicclass SmileFrownextends JFrame

{

JFrame frm =new JFrame("Smily Face");

publicstaticfinalint WINDOW_WIDTH = 400;

publicstaticfinalint WINDOW_HEIGHT = 400;

publicstaticfinalint FACE_DIAMETER = 200;

publicstaticfinalint X_FACE = 100;

publicstaticfinalint Y_FACE = 100;

publicstaticfinalint EYE_WIDTH = 20;

publicstaticfinalint EYE_HEIGHT = 10;

publicstaticfinalint X_RIGHT_EYE = X_FACE + 55;

publicstaticfinalint Y_RIGHT_EYE = Y_FACE + 60;

publicstaticfinalint X_LEFT_EYE = X_FACE + 130;

publicstaticfinalint Y_LEFT_EYE = Y_FACE + 60;

publicstaticfinalint MOUTH_WIDTH = 100;

publicstaticfinalint MOUTH_HEIGHT = 50;

publicstaticfinalint X_MOUTH = X_FACE + 50;

publicstaticfinalint Y_MOUTH = Y_FACE + 100;

publicstaticfinalint MOUTH_START_ANGLE = 180;

publicstaticfinalint MOUTH_START_ANGLE2 = 0;

publicstaticfinalint MOUTH_ARC_SWEEP = -180;

int chooser = 0;

public SmileFrown ()

{

setSize(WINDOW_WIDTH, WINDOW_HEIGHT);

setVisible(true);

addWindowListener(new sfrown( ));

}

privateclass sfrownimplements WindowListener

{

publicvoid windowOpened(WindowEvent e)

{}

publicvoid windowClosing(WindowEvent e)

{}

publicvoid windowClosed(WindowEvent e)

{}

publicvoid windowIconified(WindowEvent e)

{}

publicvoid windowDeiconified(WindowEvent e)

{}

publicvoid windowActivated(WindowEvent e)

{

chooser = 1;

repaint();

}

publicvoid windowDeactivated(WindowEvent e)

{

chooser = 2;

frm.setTitle("Frowny Face");

repaint();

}

}

publicvoid paint(Graphics g)

{

if (chooser == 1)

{

g.drawOval(X_FACE, Y_FACE, FACE_DIAMETER, FACE_DIAMETER);

g.fillOval(X_RIGHT_EYE, Y_RIGHT_EYE, EYE_WIDTH, EYE_HEIGHT);

g.fillOval(X_LEFT_EYE, Y_LEFT_EYE, EYE_WIDTH, EYE_HEIGHT);

g.drawArc(X_MOUTH, Y_MOUTH, MOUTH_WIDTH, MOUTH_HEIGHT,

MOUTH_START_ANGLE, MOUTH_ARC_SWEEP);

}

elseif (chooser == 2)

{

g.drawOval(X_FACE, Y_FACE, FACE_DIAMETER, FACE_DIAMETER);

g.fillOval(X_RIGHT_EYE, Y_RIGHT_EYE, EYE_WIDTH, EYE_HEIGHT);

g.fillOval(X_LEFT_EYE, Y_LEFT_EYE, EYE_WIDTH, EYE_HEIGHT);

g.drawArc(X_MOUTH, Y_MOUTH, MOUTH_WIDTH, MOUTH_HEIGHT,

MOUTH_START_ANGLE2, MOUTH_ARC_SWEEP);

}

}

publicstaticvoid main (String [] args)

{

SmileFrown sf =new SmileFrown();

}

}

[7272 byte] By [DaVeeCka] at [2007-11-26 15:23:44]
# 1

Few changes:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class SmileFrown extends JFrame

{

// remove creation of unneeded JFrame

public static final int WINDOW_WIDTH = 400;

public static final int WINDOW_HEIGHT = 400;

public static final int FACE_DIAMETER = 200;

public static final int X_FACE = 100;

public static final int Y_FACE = 100;

public static final int EYE_WIDTH = 20;

public static final int EYE_HEIGHT = 10;

public static final int X_RIGHT_EYE = X_FACE + 55;

public static final int Y_RIGHT_EYE = Y_FACE + 60;

public static final int X_LEFT_EYE = X_FACE + 130;

public static final int Y_LEFT_EYE = Y_FACE + 60;

public static final int MOUTH_WIDTH = 100;

public static final int MOUTH_HEIGHT = 50;

public static final int X_MOUTH = X_FACE + 50;

public static final int Y_MOUTH = Y_FACE + 100;

public static final int MOUTH_START_ANGLE = 180;

public static final int MOUTH_START_ANGLE2 = 0;

public static final int MOUTH_ARC_SWEEP = -180;

int chooser = 0;

public SmileFrown ()

{

super("Smily Face");// Added

setSize(WINDOW_WIDTH, WINDOW_HEIGHT);

setVisible(true);

addWindowListener(new sfrown( ));

}

private class sfrown implements WindowListener

{

public void windowOpened(WindowEvent e)

{}

public void windowClosing(WindowEvent e)

{}

public void windowClosed(WindowEvent e)

{}

public void windowIconified(WindowEvent e)

{}

public void windowDeiconified(WindowEvent e)

{}

public void windowActivated(WindowEvent e)

{

chooser = 1;

setTitle("Smily Face"); // Added

repaint();

}

public void windowDeactivated(WindowEvent e)

{

chooser = 2;

setTitle("Frowny Face"); // Changed

repaint();

}

}

public void paint(Graphics g)

{

g.setColor(Color.CYAN); // Color of your choice.

g.fillRect(0,0,getWidth(),getHeight()); // Added

g.setColor(Color.BLACK); // Added

if (chooser == 2)// Reversed

{

g.drawOval(X_FACE, Y_FACE, FACE_DIAMETER, FACE_DIAMETER);

g.fillOval(X_RIGHT_EYE, Y_RIGHT_EYE, EYE_WIDTH, EYE_HEIGHT);

g.fillOval(X_LEFT_EYE, Y_LEFT_EYE, EYE_WIDTH, EYE_HEIGHT);

g.drawArc(X_MOUTH, Y_MOUTH, MOUTH_WIDTH, MOUTH_HEIGHT,

MOUTH_START_ANGLE, MOUTH_ARC_SWEEP);

}

else if (chooser == 1)// Reversed

{

g.drawOval(X_FACE, Y_FACE, FACE_DIAMETER, FACE_DIAMETER);

g.fillOval(X_RIGHT_EYE, Y_RIGHT_EYE, EYE_WIDTH, EYE_HEIGHT);

g.fillOval(X_LEFT_EYE, Y_LEFT_EYE, EYE_WIDTH, EYE_HEIGHT);

g.drawArc(X_MOUTH, Y_MOUTH, MOUTH_WIDTH, MOUTH_HEIGHT,

MOUTH_START_ANGLE2, MOUTH_ARC_SWEEP);

}

}

public static void main (String [] args)

{

SmileFrown sf = new SmileFrown();

}

}

abillconsla at 2007-7-8 21:39:01 > top of Java-index,Java Essentials,New To Java...
# 2

thanks alot my friend .. i got it right in this code but there is one

problem which is when the i start execution the frame appers with

a sad face at the first time it appears .. i want it to be smiley when it first appears .. any help?

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class SmileFrown extends JFrame

{

public static final int WINDOW_WIDTH = 400;

public static final int WINDOW_HEIGHT = 400;

public static final int FACE_DIAMETER = 200;

public static final int X_FACE = 100;

public static final int Y_FACE = 100;

public static final int EYE_WIDTH = 20;

public static final int EYE_HEIGHT = 10;

public static final int X_RIGHT_EYE = X_FACE + 55;

public static final int Y_RIGHT_EYE = Y_FACE + 60;

public static final int X_LEFT_EYE = X_FACE + 130;

public static final int Y_LEFT_EYE = Y_FACE + 60;

public static final int MOUTH_WIDTH = 100;

public static final int MOUTH_HEIGHT = 50;

public static final int X_MOUTH = X_FACE + 50;

public static final int Y_MOUTH = Y_FACE + 100;

public static final int Y_MOUTH2 = Y_FACE + 125;

public static final int MOUTH_START_ANGLE = 180;

public static final int MOUTH_START_ANGLE2 = 0;

public static final int MOUTH_ARC_SWEEP = -180;

boolean status;

sFrownyPanel sfr = new sFrownyPanel();

public SmileFrown ()

{

super("Smiley Face");

setSize(WINDOW_WIDTH, WINDOW_HEIGHT);

add(sfr);

setVisible(true);

addWindowListener(new sfrown( ));

}

private class sfrown extends WindowAdapter

{

public void windowActivated(WindowEvent e)

{

status = true;

setTitle("Smiley Face");

repaint();

}

public void windowDeactivated(WindowEvent e)

{

status = false;

setTitle("Frowny Face");

repaint();

}

}

class sFrownyPanel extends JPanel

{

sFrownyPanel()

{

}

public void paint(Graphics g)

{

g.setColor(Color.BLACK);

g.fillRect(0,0,getWidth(),getHeight());

g.setColor(Color.WHITE);

g.drawOval(X_FACE, Y_FACE, FACE_DIAMETER, FACE_DIAMETER);

g.fillOval(X_RIGHT_EYE, Y_RIGHT_EYE, EYE_WIDTH, EYE_HEIGHT);

g.fillOval(X_LEFT_EYE, Y_LEFT_EYE, EYE_WIDTH, EYE_HEIGHT);

if (status == true)

g.drawArc(X_MOUTH, Y_MOUTH, MOUTH_WIDTH, MOUTH_HEIGHT,

MOUTH_START_ANGLE2, MOUTH_ARC_SWEEP);

else

{

g.drawArc(X_MOUTH, Y_MOUTH2, MOUTH_WIDTH, MOUTH_HEIGHT,

MOUTH_START_ANGLE, MOUTH_ARC_SWEEP);

}

}

}

public static void main (String [] args)

{

SmileFrown sf = new SmileFrown();

}

}

DaVeeCka at 2007-7-8 21:39:01 > top of Java-index,Java Essentials,New To Java...
# 3
Sure, on what looks like line #34, change int chooser = 0; -to- int chooser = 1;~Bill
abillconsla at 2007-7-8 21:39:01 > top of Java-index,Java Essentials,New To Java...
# 4
thank u so much my friend ..
DaVeeCka at 2007-7-8 21:39:01 > top of Java-index,Java Essentials,New To Java...
# 5
Welcome. Be well.
abillconsla at 2007-7-8 21:39:01 > top of Java-index,Java Essentials,New To Java...