Monday 23 January 2017

Chapter 24 Exercise 9, Introduction to Java Programming, Tenth Edition Y. Daniel LiangY.

24.9 (Animation: array list in slow motion) Improve the animation in the preceding programming exercise by showing the insertion and deletion operations in a slow motion


import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;

public class Exercise09 extends JApplet {

 private static final long serialVersionUID = 1L;
 private QueueAnimation queueAnimation = new QueueAnimation();
 private LinkedList<Integer> list = new LinkedList<>();
 private JTextField jtaValue = new JTextField(5);

 public Exercise09() {
  add(queueAnimation, BorderLayout.CENTER);
  JPanel jPanel = new JPanel();
  jPanel.add(new JLabel("Enter a value: "));
  jPanel.add(jtaValue);
  JButton jbtEnqueue = new JButton("Enqueue");
  jPanel.add(jbtEnqueue);
  JButton jbtDequeue = new JButton("Dequeue");
  jPanel.add(jbtDequeue);
  add(jPanel, BorderLayout.SOUTH);
  
  jbtEnqueue.addActionListener(new ActionListener() {   
   @Override
   public void actionPerformed(ActionEvent e) {
    try {
     int value = Integer.parseInt(jtaValue.getText());
     list.addLast(value);     
     queueAnimation.repaint(); 
     jtaValue.setText("");
     jtaValue.requestFocus();
    } catch (NumberFormatException e2) {
    }
   }
  });
  
  jbtDequeue.addActionListener(new ActionListener() {   
   @Override
   public void actionPerformed(ActionEvent e) {
    if(!list.isEmpty()) {
     list.removeFirst();
     queueAnimation.repaint();
     jtaValue.requestFocus();
    }
   }
  });
  
 }

 class QueueAnimation extends JPanel {
  private static final long serialVersionUID = 1L;
  
  @Override
  protected void paintComponent(Graphics g) {
   super.paintComponent(g);
   int size = 40;
   g.drawString("queue" + (list.size() == 0 ? " is empty" : ""), size, size);
   for (int i = 0; i < list.size(); i++) {
    g.drawRect(size + (i * size), 2 * size, size, size);
    g.drawString(list.get(i) + "", size + (i * size) + 4, (int)(2.6 * size));    
   }

  }

 }


 public static void main(String[] args) {
  JFrame frame = new JFrame("Exercise09");
  Exercise09 applet = new Exercise09();
  frame.add(applet);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setSize(800, 300);
  frame.setMinimumSize(new Dimension(frame.getWidth(), frame.getHeight()));
  frame.setLocationRelativeTo(null);
  frame.setVisible(true);
 }
 

}

No comments :

Post a Comment