I've made a simple class that instanciates Object[][][](used in XYDataSource), because some people here get cofused with multi-dimensional array.
if you code like below that u used to or u r doing now,
Double[][][] data_array = new Double[][][] { { { new Double(1.0), new Double(5.6) },
{ new Double(2.0), new Double(3.5) },
{ new Double(3.0), new Double(2.4) },
{ new Double(4.0), new Double(4.3) },
{ new Double(5.0), new Double(1.3) } } };
you can code like below with my classes.
Make3DimObject m3d = new Make3DimObject();
Series s = new Series();
s.addPair(new Double(2.0), new Double(3.5));
s.addPair(new Double(3.0), new Double(2.4));
s.addPair(new Double(4.0), new Double(4.3));
s.addPair(new Double(5.0), new Double(1.3));
m3d.addSeries(s);
Object[][][] data = m3d.make();
Now u got the Object !
if you have 2 series, just simply make 2 Series classes and add those to Make3DimObject.
Make3DimObject m3d = new Make3DimObject();
Series s1 = new Series();
s1.addPair(new Double(2.0), new Double(3.5));
s1.addPair(new Double(3.0), new Double(2.4));
s1.addPair(new Double(4.0), new Double(4.3));
s1.addPair(new Double(5.0), new Double(1.3));
m3d.addSeries(s1);
Series s2 = new Series();
s2.addPair(new Double(1.3), new Double(4.5));
s2.addPair(new Double(2.1), new Double(2.6));
s2.addPair(new Double(3.2), new Double(1.5));
s2.addPair(new Double(4.0), new Double(3.2));
m3d.addSeries(s2);
Object[][][] data = m3d.make();
Why I made this class is so easy to make Object[][][] with DataBase.
ResultSet rs = stmt.executeQuery("...");
Series s = new Series();
while(rs.next()){
s.addPair(rs.get... , rs.get....);
}
Make3DimObject m3d = new Make3DimObject();
m3d.addSeries(s);
Object[][][] data = m3d.make();
David, if this class is just a crap, please delete this thread...
I don't wanna shame on my code.

Finally, the code is below...
import java.util.*;
class Make3DimObject{
Object[][][] data;
Vector vec = null;
public Make3DimObject(){
vec = new Vector();
}
public void addSeries(Series s){
vec.add(s);
}
public Object[][][] make(){
int sizeOfSeries = vec.size();
int maxSizeOfPairs = 0;
for (Enumeration e = vec.elements() ; e.hasMoreElements()

int tmp = ((Series)e.nextElement()).getPairSize();
if(maxSizeOfPairs < tmp )
maxSizeOfPairs = tmp;
}
data = new Object[sizeOfSeries][maxSizeOfPairs][2];
for(int i = 0 ; i < sizeOfSeries ; i++){
Series s = (Series)vec.get(i);
for(int k = 0 ; k < s.getPairSize() ; k++){
Pair p = s.getPair(k);
data[k][0] = p.getPair1();
data[k][1] = p.getPair2();
}
}
return data;
}
}
class Pair{
private Object pair1 = null;
private Object pair2 = null;
public Pair(Object pair1, Object pair2){
this.pair1 = pair1;
this.pair2 = pair2;
}
public Object getPair1(){
return this.pair1;
}
public Object getPair2(){
return this.pair2;
}
}
class Series{
Vector vec = null;
public Series(){
vec = new Vector();
}
public void addPair(Object pair1, Object pair2){
vec.add( new Pair(pair1,pair2) );
}
public int getPairSize(){
return vec.size();
}
public Vector getPairs(){
return vec;
}
public Pair getPair(int index){
return (Pair)vec.get(index);
}
}