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
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