<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p><font face="Arial">Just sending again in case I catch a Java
        user...</font><br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 3/18/2017 2:40 PM, Jim Labiak wrote:<br>
    </div>
    <blockquote
cite="mid:6cdd07c3-2116-02e2-08e2-8c16f9590868@jslengineeringsoftware.com"
      type="cite">
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <p><font face="Arial">Hello vtk users,</font></p>
      <p><font face="Arial">I've been trying to use the JAVA VTK chart
          class to create 2D plots, but it is not working. The JRE
          crashes every time at the spot where the plot is added to the
          chart. During debugging, I trace the crash to the JAVA
          Vector.class at line 477 (method directly below), which is the
          return statement... I've extended vtkRenderWindowPanel and use
          that class to do my rendering as it seemed to be the most
          robust approach for my application. Only a portion of the code
          from that class is shown below. <br>
        </font></p>
      <p><font face="Arial">The JAVA wrapper is known to be difficult to
          learn, but 2D charts really must work for this (vtk) to be a
          viable JAVA program. I could create 3D charts and make them
          look 2D, but it seems like I must be missing something in the
          2D charts... I don't see "test" programs in the documentation
          for this class (vtkChart) and related ones in JAVA - was this
          ever tested during development, and anyone know how
          extensively? Or, is the wrapper just kind of generated and
          then exists "as-is"? Some of the statements required and shown
          in other language examples are difficult to translate into
          JAVA accurately. <br>
        </font></p>
      <p><font face="Arial">Thanks for any suggestions,</font></p>
      <p><font face="Arial">Jim<br>
        </font></p>
      <p><font face="Arial">Excerpt from Vector.class:</font><br>
      </p>
          /**<br>
           * Returns the component at the specified index.<br>
           *<br>
           * <p>This method is identical in functionality to the
      {@link #get(int)}<br>
           * method (which is part of the {@link List} interface).<br>
           *<br>
           * @param      index   an index into this vector<br>
           * @return     the component at the specified index<br>
           * @throws ArrayIndexOutOfBoundsException if the index is out
      of range<br>
           *         ({@code index < 0 || index >= size()})<br>
           */<br>
          public synchronized E elementAt(int index) {<br>
              if (index >= elementCount) {<br>
                  throw new ArrayIndexOutOfBoundsException(index + "
      >= " + elementCount);<br>
              }<br>
      <br>
              return elementData(index);<br>
          }<br>
      <br>
--------------------------------------------------------------------------------------------------------------------------<br>
      <br>
      public class RenderWindowPanel extends vtkRenderWindowPanel {<br>
      <br>
      // Only relevant part of the class is shown...<br>
      <br>
      public void updateRenderWindowPanelYPosData(Object[] aObject) {<br>
          this.xData = (vtkFloatArray) this.objectArrayXData[3];<br>
          this.yData = (vtkFloatArray) this.objectArrayYData[4];<br>
      <br>
              this.table = new vtkTable();<br>
              vtkDoubleArray arrX = new vtkDoubleArray();<br>
              arrX.SetName("ArrayX");<br>
              vtkDoubleArray arrY = new vtkDoubleArray();<br>
              arrY.SetName("ArrayY");<br>
              <br>
             
      this.table.SetNumberOfRows(this.xData.GetNumberOfTuples());<br>
                  double tempx = 0;<br>
                  double tempy = 0;<br>
                  <br>
                  // Column 0<br>
                  for (int i = 0; i < this.xData.GetNumberOfTuples();
      i++) {<br>
                      tempx = this.xData.GetValue(i);<br>
                      arrX.InsertNextTuple1(tempx);    <br>
                  }<br>
                  this.table.AddColumn(arrX);<br>
                  <br>
                  // Column 1<br>
                  for (int i = 0; i < this.yData.GetNumberOfTuples();
      i++) {<br>
                      tempy = this.yData.GetValue(i);<br>
                      arrY.InsertNextTuple1(tempy);    <br>
                  }<br>
                  this.table.AddColumn(arrY);<br>
              <br>
              this.chart = new vtkChart();<br>
              this.plot = new vtkPlot();<br>
              this.chart.AddPlot(this.plot);<br>
              // Note: also tried this.plot = this.chart.AddPlot(0);<br>
              this.plot.SetColor(0.0, 0.0, 255.0);<br>
              this.plot.SetWidth(1.0);<br>
              this.plot.SetInputData(this.table, "ArrayX", "ArrayY");<br>
              <br>
              this.view = new vtkContextView();<br>
              this.view.SetRenderWindow(this.GetRenderWindow());<br>
              this.view.SetRenderer(this.renderer);<br>
              this.view.GetRenderWindow().SetMultiSamples(0);<br>
              this.view.GetScene().AddItem(this.chart);<br>
                              <br>
              this.renderer.SetActiveCamera(this.camera);<br>
              this.renderer.AddActor(this.textActor);<br>
              this.renderer.SetBackground(255, 255, 255); // white<br>
              this.renderer.ResetCamera();<br>
              this.renderWindowInteractor = this.view.GetInteractor();<br>
              this.view.GetInteractor().Initialize();<br>
              this.view.GetInteractor().Start();<br>
                  <br>
              try {<br>
                  this.Render();<br>
                  System.out.println("Debug break after render");<br>
              } catch (Exception e) {<br>
                  e.printStackTrace();<br>
              }<br>
              <br>
      }<br>
      <br>
      }        <br>
              <br>
      <br>
      <br>
      <br>
      <br>
    </blockquote>
    <br>
  </body>
</html>