Java Source - Sleepy Source.


Chương hiển thị một gương mặt đang ngủ, và có thể được đánh thức bởi một action button.
Program displays a sleeping face, and can be awakened by an action button.





Mã nguồn - Source Code

// Sleepy.java - Face with buttons -- Fred Swartz 2002-11-15
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;


/////////////////////////////////////////////////////////// class Sleepy
class Sleepy {

    //================================================== method main
    public static void main(String[] args) {
        JFrame windo = new JFrame("Sleepy");
        windo.getContentPane().add(new SleepyPanel());
        windo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        windo.pack();
        windo.show();
    }//end main

}//end class Sleepy



////////////////////////////////////////////////////// class SleepyPanel
class SleepyPanel extends JPanel {
    private Sleeper face = new Sleeper();


    //================================================== constructor
    SleepyPanel() {
        //--- Create some buttons
        JButton awakeButton = new JButton("Awake");
        awakeButton.addActionListener(
            new ActionListener() {

                //========================================= listener
                public void actionPerformed(ActionEvent e) {
                    face.setAwake(true);
                }//end listener

            }
        );
        JButton asleepButton = new JButton("Asleep");
        asleepButton.addActionListener(
            new ActionListener() {

                //========================================= listener
                public void actionPerformed(ActionEvent e) {
                    face.setAwake(false);
                }//end listener

            }
        );

        //--- Put the buttons in a flowlayout panel
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new FlowLayout());
        buttonPanel.add(awakeButton);
        buttonPanel.add(asleepButton);

        //--- Set layout and add buttons and face
        this.setLayout(new BorderLayout());
        this.add(buttonPanel, BorderLayout.NORTH);
        this.add(face, BorderLayout.CENTER);
    }//end constructor

}//endclass SleepyPanel



////////////////////////////////////////////////////////// class Sleeper
class Sleeper extends JPanel {

    //------------------------------------------- instance variables
    private boolean awake = false;  // show face awake or asleep
    //end instance variables



    //================================================== constructor
    Sleeper() {
        this.setBackground(Color.lightGray);
        this.setPreferredSize(new Dimension(400, 400));  // size
    }//end constructor



    //======================================== logic method setAwake

    public void setAwake(boolean awakeAsleep) {
        awake = awakeAsleep; // remember expression on face
        repaint();           // redraw it with new value
    }//end setAwake



    //================================== logic method paintComponent
    public void paintComponent(Graphics g) {
        super.paintComponent(g);  // MUST be first line

        //--- draw head
        g.setColor(Color.yellow);
        g.fillOval(8, 8, 384, 384);

        //--- draw eyes
        g.setColor(Color.black);
        if (awake) {
            g.fillOval(100, 150, 50, 100);  // left eye
            g.fillOval(250, 150, 50, 100);  // right eye
        }
        else {
            g.fillRect(50 , 200, 100, 4); // left eye
            g.fillRect(250, 200, 100, 4); // left eye
        }
    }//end paintComponent

}//endclass Sleeper


Kết quả - Result




Source: leepoint









No comments:

Post a Comment