cannot be cast to javax.swing.JPanel

1,217 views
Skip to first unread message

k elzhar

unread,
Apr 14, 2014, 9:12:25 AM4/14/14
to jz...@googlegroups.com
Helo, i have problem to render 3d graph

here my code..

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


package app;
import javax.swing.JComponent;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import org.jzy3d.chart.Chart;
import org.jzy3d.colors.Color;
import org.jzy3d.colors.ColorMapper;
import org.jzy3d.colors.colormaps.ColorMapRainbow;
import org.jzy3d.maths.Range;
import org.jzy3d.plot3d.builder.Builder;
import org.jzy3d.plot3d.builder.Mapper;
import org.jzy3d.plot3d.builder.concrete.OrthonormalGrid;
import org.jzy3d.plot3d.primitives.Shape;
import org.jzy3d.plot3d.rendering.canvas.*;
import org.jzy3d.plot3d.rendering.canvas.CanvasAWT;
import org.jzy3d.bridge.*;



/**
 *
 * @author kael
 */

public class App extends javax.swing.JFrame {
   
private final JPanel panel1 = new JPanel();
   
private final JPanel panel2 = new JPanel();
   
private final JPanel panel3 = new JPanel();
   
private final JLabel Banner = new JLabel("Environmental Degrading");
   
private final JLabel s1 = new JLabel("Rate Degrading For Jan");
   
JLabel s2 = new JLabel("Rate Degrading For Dec");
   
JTextField s1text = new JTextField(2);
   
JTextField s2text = new JTextField(2);
   
JButton Intro = new JButton("Introduction");
   
JButton Calc = new JButton("Calculate");
     
JPanel contentPane = new JPanel(new BorderLayout());
     
private final JPanel paneljan = new JPanel();
     
private final JPanel paneldec = new JPanel();
       
private final JPanel panelIntro = new JPanel();
       
private final JPanel graphpanel = new JPanel();
       
     
public App() {
    mainGUI
();
             
Mapper mapper = new Mapper() {
           
public double f(double x, double y) {
               
return x * Math.sin(x * y);
           
}
       
};

       
// Define range and precision for the function to plot
       
Range range = new Range(-3, 3);
       
int steps = 80;

       
// Create the object to represent the function over the given range.
           
final Shape surface = Builder.buildOrthonormal(new OrthonormalGrid(range, steps, range, steps), mapper);
        surface
.setColorMapper(new ColorMapper(new ColorMapRainbow(), surface.getBounds().getZmin(), surface.getBounds().getZmax(), new Color(1, 1, 1, .5f)));
        surface
.setFaceDisplayed(true);
        surface
.setWireframeDisplayed(false);
panelIntro
.setLayout(new java.awt.BorderLayout());
Chart chart = new Chart(Quality.Advanced, "swing");
        chart
.getScene().getGraph().add(surface);
        chart
.render();


       
panelIntro
.add((JPanel)chart.getCanvas());
       
//panelIntro.setPreferredSize(new Dimension(300,300));


}

 
public void mainGUI(){

   
Calc.addActionListener(new ActionListener() {
       

       
@Override
       
public void actionPerformed(ActionEvent e) {
           panelIntro
.setVisible(false);
         panel2
.setVisible(true);
       
}
   
});
   
   
Intro.addActionListener(new ActionListener() {
       

       
@Override
       
public void actionPerformed(ActionEvent e) {
           panelIntro
.setVisible(true);
         panel2
.setVisible(false);
       
}
   
});
   
    paneljan
.setLayout(new FlowLayout());
    paneldec
.setLayout(new FlowLayout());
    paneljan
.add(s1);
    paneljan
.add(s1text);
    paneldec
.add(s2);
    paneldec
.add(s2text);
    panel3
.add(Banner, rootPane);
    panel2
.add(paneljan);
    panel2
.add(paneldec);
    panel2
.setLayout(new GridLayout(12,2,2,1));
 
    panel1
.setLayout(new GridLayout(12,2,2,1));
    panel1
.add(Intro);
    panel1
.add(Calc);
    panel1
.setAlignmentX(Component.CENTER_ALIGNMENT);
    s1text
.setEditable(true);
    s2text
.setEditable(true);
    panel2
.setVisible(false);
   
   
   
JPanel contentPane = new JPanel(new BorderLayout());
//contentPane.setBorder();
contentPane
.add(panel1, BorderLayout.LINE_START);
contentPane
.add(panelIntro, BorderLayout.CENTER);
contentPane
.add(panel2, BorderLayout.CENTER);
contentPane
.add(panel3, BorderLayout.PAGE_START);
this.add(contentPane);
 
}

public void Calc(){
 
}
   
/**
     * @param args the command line arguments
     */

   
public static void main(String[] args) throws Exception {
       
// TODO code application logic here
       
       
App newapp = new App();
       newapp
.setVisible(true);
       newapp
.setSize(800,600);
       newapp
.setDefaultCloseOperation(EXIT_ON_CLOSE);
       
//newapp.remove(panel2);
   
}
   
}

Here error..
Exception in thread "main" java.lang.ClassCastException: org.jzy3d.plot3d.rendering.canvas.VoidCanvas cannot be cast to javax.swing.JPanel
    at app
.App.<init>(App.java:74)
    at app
.App.main(App.java:142)
Java Result: 1




hope someone can help me about this.. thanks

best regards,
kael

Chris Foley

unread,
Apr 14, 2014, 9:49:58 AM4/14/14
to jz...@googlegroups.com
panelIntro.add((JPanel)chart.getCanvas());

I think you need to cast it to a Component:

panelIntro.add((Component)chart.getCanvas());


k elzhar

unread,
Apr 14, 2014, 10:19:35 AM4/14/14
to jz...@googlegroups.com
same sir
still error..


org.jzy3d.plot3d.rendering.canvas.VoidCanvas cannot be cast to java.awt.Component

Chris Foley

unread,
Apr 14, 2014, 10:27:16 AM4/14/14
to jz...@googlegroups.com
That rings a bell. I think I got around it by using and "awt" chart instead of "swing"

k elzhar

unread,
Apr 14, 2014, 10:38:16 AM4/14/14
to jz...@googlegroups.com


On Monday, 14 April 2014 22:27:16 UTC+8, Chris Foley wrote:
That rings a bell. I think I got around it by using and "awt" chart instead of "swing"

error also.. i think miss other part
Reply all
Reply to author
Forward
0 new messages