The fourth step, the Sample4.java
file, see <installdir> /jviews-framework810/codefragments/getstart/index.html,
is an extension of the Sample3 file.
Compile the Sample4.java file and run
it as you did for the previous example files. See Running
the example.
![sample4.png](../../JViews_Framework/usressfwork/_media/sample4_default.png)
Sample4 running
Adding graphic objects
To be able to manipulate graphic objects,
you must first import the Rogue Wave® JViews package that
contains the graphic objects:
import ilog.views.graphic.*;
In this example, you implement the
addObjects
method which adds ten objects of the IlvIcon class to the manager:
public void addObjects() { manager.setSelectable(0, false); for (int i = 0 ; i < 10 ; i++) { IlvGraphic obj = new IlvIcon("image.gif", new IlvRect(0,0,37,38)); manager.addObject(obj, 1, false); } }
The first line in this method calls the
setSelectable
method on the manager with
0
and
false
as its parameters:
manager.setSelectable(0, false);
The first parameter,
0
, specifies the layer in the manager to which the method applies.
The second parameter,
false
, specifies whether objects in the layer passed as the first
parameter can be selected (
true
) or not (
false
).
Objects in a manager can be stored in
different layers, which are identified by indices. Layers are
drawn on top of each other, starting at index 0. In other words,
the first layer is assigned the index 0, the second layer, the
index 1, and so on, with the objects stored in a higher screen
layer being displayed in front of objects in lower layers.
In the
lou.ivl
file loaded in the manager, the objects that make up the picture
are stored in layer
0
. Calling the
setSelectable
method with
0
and
false
as parameters specifies that the picture (layer
0
) cannot be selected, and hence, cannot be modified.
The following
addObject
method adds the
IlvIcon
objects to layer 1 of the manager:
manager.addObject(obj, 1, false);
Call the
addObjects()
method from the application initiation method. In this case the
Sample4
method.
Note
The
false
parameter of this method specifies that the redraw is not to be
triggered. Here no redraw is needed because the application is
not visible when this code is executed.
Test the interface of the application by
clicking the objects with the mouse. You can see that the new
objects are selectable, whereas you can no longer select or
modify the picture.
Moving graphic objects
Sample4
has a new button in the
appButtons()
method which is used to move the IlvIcon objects in a random way.
Button moveButton = new Button("move"); moveButton.setBackground(Color.gray); moveButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { moveObjects(); } }); buttons.add(moveButton); }
The movement of the objects is implemented in the
Sample4.moveObjects
() method. This method gets an enumeration of objects contained
in layer 1 (the new objects), and, for each of these objects,
finds a random object in layer 0 and moves the objects of layer 1
to the center of the objects of layer 0 by calling IlvManager.
void moveObjects() { IlvGraphic state=null, obj=null; // get objects in layer 1 IlvGraphicEnumeration objects, states; for (objects = manager.getObjects(1); objects.hasMoreElements();) { obj = objects.nextElement(); // get an random object in layer 0 states = manager.getObjects(0); int index = (int)((double)manager.getCardinal(0)*Math.random()); state = states.nextElement(); for (int i = 1 ; i < index; i++) state = states.nextElement(); if (state != null) { // move the object. IlvRect bbox = state.boundingBox(null); manager.moveObject(obj, bbox.x+bbox.width/2, bbox.y+bbox.height/2, true); } } }