0
我正在嘗試製作一個顯示可操作的Jzy3D圖形的小程序。目前我已經設法讓它顯示圖表,但無論如何我無法影響它;這是有意義的,因爲applet目前不在尋找任何用戶輸入。將Jzy3D嵌入到一個小程序中
我應該如何拿起用戶輸入(鼠標移動,點擊等)?我想我可以嘗試創建一個信使類,它接收applet輸入並將其發送給Jzy3D,然後Jzy3D接受移動並對其執行操作,但看起來非常複雜。 看着Community Discussion Board,建議使用JOGLAppletLaucher。那是爲了繞過這個問題嗎?如果是這樣,它應該怎麼做?
編輯:我相信我現在明白JOGLAppletLauncher(及其succesor 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
}
}