Loading

ZOrder



/***
* Problem: Insert the missing code in the following methods of THIS program to modify the
* contents of the ArrayList variable named 'shapeList'
*
* Methods to insert shapes in 'shapeList'
* - addToIndex()
* - addToFront()
* - addToBack()
*
* Method to remove existing shapes from 'shapeList'
* - deleteAtIndex()
*
* Methods to rearrange the order of shapes in 'shapeList'
* - sendToBack()
* - bringToFront()
* - sendBackward()
* - bringForward()
*/

package prelims;

import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;

/**
* @(#)ZOrder.java
*
* JFC ZOrder application
*
* @author
* @version 1.00 2011/7/7
*/

public class ZOrder extends JPanel {
static final long serialVersionUID = 1;
static final int WIDTH = 600;
static final int HEIGHT = 400;

static final ArrayList shapeList = new ArrayList();

/***
* DO NOT MODIFY THE CODE BEFORE THIS COMMENT
*/

public void addToFront(ZOrderShape shape) {
// add 'shape' so that it appears in front of ALL the other shapes ...

shapeList.add( 0,shape ); // <--- just a sample statement (which does NOT 'add to front')

// ... and update the display on the panel
repaint();
}

public void addToBack(ZOrderShape shape) {
// add 'shape' so that it appears at the back of ALL the other shapes ...

shapeList.add( shape ); // put the shape at the back...

// ... and update the display on the panel
repaint();
}

public void addToIndex(ZOrderShape shape, int index) {
// add 'shape' at the specified 'index'...

shapeList.add ( shape );

// ... and update the display on the panel
repaint();
}

public void deleteAtIndex(int index) {
// remove from the list the shape that is found on the specified 'index' ...

shapeList.remove( index );

// ... and update the display on the panel
repaint();
}

public void sendToBack(int index) {
// move the shape with the specified index so that it will appear
// at the back of ALL the other shapes...

shapeList.add(shapeList.get(index));
shapeList.remove ( index );

// ... and update the display on the panel
repaint();
}

public void bringToFront(int index) {
// move the shape with the specified index so that it will appear
// in front of ALL the other shapes...

ZOrderShape shape = shapeList.remove (index);
shapeList.add ( 0,shape );
// ... and update the display on the panel
repaint();
}

public void sendBackward(int index) {
// move the shape with the specified index so that it will appear
// at the back of the next shape before it...

ZOrderShape shape = shapeList.remove (index+1);
shapeList.remove (index - 1);
shapeList.add ( 0,shape );
// ... and update the display on the panel
repaint();
}

public void bringForward(int index) {
// move the shape with the specified index so that it will appear
// in front of the next shape after it...

ZOrderShape shape = shapeList.remove (index-1);
shapeList.add ( shape );

// ... and update the display on the panel
repaint();
}

/***
* DO NOT MODIFY THE CODE AFTER THIS COMMENT
*/

// just a constructor
private ZOrder() {
ZOrderListener listener = new ZOrderListener(this);

// the following are methods inherited from the extended JPanel class
this.setBorder( new EtchedBorder(EtchedBorder.RAISED) );
this.setPreferredSize( new Dimension(WIDTH, HEIGHT) );
this.setBackground( Color.WHITE );
this.addMouseListener( listener );
this.addMouseMotionListener( listener );
}

// overloaded JPanel method - draws the ZOrderShapes on the panel
public void paintComponent(Graphics g) {
// invokes the paintComponent() method of the extended class, i.e. the JPanel class
super.paintComponent( g );

Graphics2D canvas = (Graphics2D)g;
canvas.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );

// draw the shapes in 'shapeList' from LAST to FIRST...
for (int i=shapeList.size()-1; i>=0; i--) {
ZOrderShape shape = shapeList.get(i);

shape.draw( canvas );
}
}

// program execution starts here...
public static void main(String[] args) {
JFrame frame;
JPanel panel = ZOrderGUI.createInterface( new ZOrder() );

frame = new JFrame("Z-Order");
frame.setContentPane( panel );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible( true );
}
}

i have a problem in methods:
addToIndex()
deleteAtIndex()
sendBackward()
bringForward()

Anyone can help me?



Add new comment