<code class="inlinecode">
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class Button{
public static void main(String[] args) {
JFrame window = new JFrame("Sleepy");
window.getContentPane().add(new SleepyPanel());
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.show();
}
}
class SleepyPanel extends JPanel {
private Sleeper face = new Sleeper();
SleepyPanel() {
//--- Create some buttons
Button awakeButton = new Button("Awake");
awakeButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
face.setAwake(true);
}
}
);
JButton asleepButton = new JButton("Asleep");
asleepButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
face.setAwake(false);
}
}
);
JButton evilButton= new JButton("Evil");
evilButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e){
face.setAwake(false);
}
}
);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
buttonPanel.add(awakeButton);
buttonPanel.add(asleepButton);
buttonPanel.add(evilButton);
this.setLayout(new BorderLayout());
this.add(buttonPanel, BorderLayout.NORTH);
this.add(face, BorderLayout.CENTER);
}
}
class Sleeper extends JPanel {
private boolean awake = true;
private boolean evil = true;
private boolean asleep = true;
Sleeper() {
this.setBackground(Color.lightGray);
this.setPreferredSize(new Dimension(500, 500));
}
public void setAwake(boolean awakeAsleep) {
awake = awakeAsleep;
repaint();
}
public void setEvil(boolean asleepEvil){
evil = asleepEvil;
repaint();
}
public void setAsleep(boolean asleepAwake){
asleep = asleepAwake;
repaint();
}
public void paintComponent(Graphics g) {
super.paintComponent(g); // MUST be first line
//--- draw head
g.setColor(Color.yellow);
g.fillOval(50, 50, 380, 380);
//--- draw eyes*/
g.setColor(Color.black);
if (awake) {
g.fillOval(180 , 100, 50, 70); // left eye
g.fillOval(279, 100, 50, 70); // right eye
}
else if(evil){
g.setColor(Color.red);
g.fillOval(180 , 100, 50, 70);
g.fillOval(279, 100, 50, 70);
}
else if(asleep){
g.fillRect(160 , 100, 90, 44); // left eye
g.fillRect(259, 100, 90, 44); // left eye
}
else{
g.fillRect(0 , 450, 500, 50);
}
}//end paintComponent
}//endclass Sleeper
</code>