操作可能なJzy3Dグラフを表示するアプレットを作成しようとしています。現在、グラフを表示することができましたが、とにかく影響を与えることはできません。アプレットは現在ユーザー入力を検索していないため、これは理にかなっています。
ユーザー入力(マウスの移動、クリックなど)をどのように取得する必要がありますか?アプレットの入力を取得してJzy3Dに送信するメッセンジャークラスを作成して、それを使って動きを処理することもできると思いますが、それは非常に複雑に思えます。コミュニティディスカッション掲示板を見ると、JOGLAppletLaucherを使用することが提案されました。この問題を回避することがそのポイントですか?もしそうなら、それはどのようにそうすることになっていますか?
編集:私は今、JOGLAppletLauncher(およびその後継のJNLPAppletLauncher)の要点を理解していると思いますが、ユーザー入力をどのように送信するかという問題は依然として残っています。何か案は?
私の現在のコード:
package daniel.work;
import java.applet.Applet;
import javax.swing.JApplet;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import com.sun.opengl.util.JOGLAppletLauncher;
public class SimpleApplet extends JApplet {
public void start(){
try{
SwingUtilities.invokeAndWait(new Runnable(){
public void run(){
add(ScatterCanvas.generateCanvas());
}
});
}
catch(Exception e){
System.out.println(e);
}
}
}
と
package daniel.work;
import java.awt.Canvas;
import org.jzy3d.chart.Chart;
import org.jzy3d.colors.Color;
import org.jzy3d.demos.AbstractDemo;
import org.jzy3d.demos.Launcher;
import org.jzy3d.maths.Coord3d;
import org.jzy3d.plot3d.primitives.Scatter;
public class ScatterCanvas extends AbstractDemo{
public static Canvas generateCanvas(){
// Create the dot cloud scene and fill with data
int size = 2000;
float x;
float y;
float z;
float a;
Coord3d[] points = new Coord3d[size];
Color[] colors = new Color[size];
for(int i=0; i<size; i++){
x = (float)Math.random() - 0.5f;
y = (float)Math.random() - 0.5f;
z = (float)Math.random() - 0.5f;
points[i] = new Coord3d(x, y, z);
a = 0.25f + (float)(points[i].distance(Coord3d.ORIGIN)/Math.sqrt(1.3)) / 2;
colors[i] = new Color(x, y, z, a);
}
Scatter scatter = new Scatter(points, colors);
chart = new Chart();
chart.getScene().add(scatter);
return (Canvas) chart.getCanvas();
}
protected static Chart chart;
@Override
public void init() throws Exception {
// TODO Auto-generated method stub
}
}