Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在applet中嵌入Jzy3D_Java_3d_Applet_Jogl_Jzy3d - Fatal编程技术网

Java 在applet中嵌入Jzy3D

Java 在applet中嵌入Jzy3D,java,3d,applet,jogl,jzy3d,Java,3d,Applet,Jogl,Jzy3d,我正在尝试制作一个小程序,显示一个可操作的Jzy3D图形。目前我已经设法让它显示图形,但无论如何我都不能影响它;这是有意义的,因为小程序当前没有寻找任何用户输入 我应该如何获取用户输入(鼠标移动、单击等)?我想我可以尝试创建一个messenger类,它接收applet输入并将其发送到Jzy3D,然后Jzy3D接收移动并使用它进行操作,但这似乎非常复杂。看一看,有人建议使用JOGLAPPLETLACHER。这样做的目的是绕过这个问题吗?如果是,该如何做 编辑:我相信我现在理解了JOGLApplet

我正在尝试制作一个小程序,显示一个可操作的Jzy3D图形。目前我已经设法让它显示图形,但无论如何我都不能影响它;这是有意义的,因为小程序当前没有寻找任何用户输入

我应该如何获取用户输入(鼠标移动、单击等)?我想我可以尝试创建一个messenger类,它接收applet输入并将其发送到Jzy3D,然后Jzy3D接收移动并使用它进行操作,但这似乎非常复杂。看一看,有人建议使用JOGLAPPLETLACHER。这样做的目的是绕过这个问题吗?如果是,该如何做

编辑:我相信我现在理解了JOGLAppletLauncher(及其成功的JNLAppletLauncher)的意义,但如何传输用户输入的问题仍然存在。有什么想法吗

我当前的代码:

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.work;
导入java.awt.Canvas;
导入org.jzy3d.chart.chart;
导入org.jzy3d.colors.Color;
导入org.jzy3d.demos.AbstractDemo;
导入org.jzy3d.demos.Launcher;
导入org.jzy3d.math.Coord3d;
导入org.jzy3d.plot3d.primitives.Scatter;
公共类ScatterCanvas扩展了AbstractDemo{
公共静态画布generateCanvas(){
//创建点云场景并填充数据
int size=2000;
浮动x;
浮动y;
浮动z;
浮动a;
Coord3d[]点=新的Coord3d[尺寸];
颜色[]颜色=新颜色[尺寸];

for(inti=0;我明白了!这是我的代码。我还将generateSatter更改为现在返回图表“return Chart”,而不是ICavnas

package myjogl;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.SwingUtilities;

import org.jzy3d.chart.Chart;
import org.jzy3d.chart.controllers.mouse.ChartMouseController;
import org.jzy3d.chart.controllers.thread.ChartThreadController;
import org.jzy3d.plot3d.rendering.canvas.ICanvas;


@SuppressWarnings("serial")
public class JzyApplet extends JApplet implements ActionListener{

private Chart chart = null;
private ICanvas canvas = null;

public void init(){
    try{
        SwingUtilities.invokeAndWait(new Runnable(){
            public void run(){
                chart = ScatterCanvas.generateCanvas(); //this just returns a chart object with a scatter object
                canvas = chart.getCanvas();

                add((Component) canvas);                
            }
        });     
    }
    catch(Exception e){
        System.out.println(e);
    }   

    ChartMouseController mouse   = new ChartMouseController();

    chart.addController(mouse);


    ChartThreadController thread = new ChartThreadController();
    mouse.addSlaveThreadController(thread);
    chart.addController(thread);

    thread.start();

}

@Override
public void actionPerformed(ActionEvent e) {}

public void zoom(){
    float value = canvas.getView().getBounds().getXmax()-10;
    canvas.getView().getBounds().setXmax(value);
    canvas.getView().shoot();
}


}
package myjogl;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.SwingUtilities;

import org.jzy3d.chart.Chart;
import org.jzy3d.chart.controllers.mouse.ChartMouseController;
import org.jzy3d.chart.controllers.thread.ChartThreadController;
import org.jzy3d.plot3d.rendering.canvas.ICanvas;


@SuppressWarnings("serial")
public class JzyApplet extends JApplet implements ActionListener{

private Chart chart = null;
private ICanvas canvas = null;

public void init(){
    try{
        SwingUtilities.invokeAndWait(new Runnable(){
            public void run(){
                chart = ScatterCanvas.generateCanvas(); //this just returns a chart object with a scatter object
                canvas = chart.getCanvas();

                add((Component) canvas);                
            }
        });     
    }
    catch(Exception e){
        System.out.println(e);
    }   

    ChartMouseController mouse   = new ChartMouseController();

    chart.addController(mouse);


    ChartThreadController thread = new ChartThreadController();
    mouse.addSlaveThreadController(thread);
    chart.addController(thread);

    thread.start();

}

@Override
public void actionPerformed(ActionEvent e) {}

public void zoom(){
    float value = canvas.getView().getBounds().getXmax()-10;
    canvas.getView().getBounds().setXmax(value);
    canvas.getView().shoot();
}


}