[vtkusers] Problem with Render() in Java/Linux
Toh Da Jun
tohdj at bii.a-star.edu.sg
Mon Feb 7 21:25:30 EST 2005
Hi,
I'm using Linux + Java and making use of the vtkPanel and vtkCanvas to
develop a program.
After I had set up the renderwindow etc etc, and my GUI is up and
running, I clicked on a Menu option (public void ViewMedium()) and it
adds an actor into the Renderer.
When I did a count of the number of visible actors in the Renderer, the
number is correct, but I cannot see the new actor in the display.
Anybody know what's wrong with this? Thanks
tohdj
=======================================================================
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import vtk.*;
public class MCSCanvas extends JPanel {
private vtkCanvas renWin;
private AxesActor MCSAxesActor;
private MediumActor MCSMediumActor;
private boolean isDisplayed = false;
public MCSCanvas() {
setLayout(new BorderLayout());
// Create the buttons.
renWin = new vtkCanvas();
add(renWin, BorderLayout.CENTER);
AxesActor MCSAxesActor = new AxesActor(renWin.GetRenderer());
renWin.GetRenderer().AddActor(MCSAxesActor);
MCSMediumActor = new MediumActor(renWin.GetRenderer());
}
public void ViewMedium()
{
if (isDisplayed == false) {
System.out.println(renWin.GetRenderer().VisibleActorCount());
renWin.GetRenderer().AddActor(MCSMediumActor);
renWin.Render();
isDisplayed = true;
System.out.println("ViewMedium ON");
System.out.println(renWin.GetRenderer().VisibleActorCount());
}
else {
System.out.println(renWin.GetRenderer().VisibleActorCount());
renWin.GetRenderer().RemoveActor(MCSMediumActor);
renWin.Render();
isDisplayed = false;
System.out.println("ViewMedium OFF");
System.out.println(renWin.GetRenderer().VisibleActorCount());
}
}
public void reSize()
{
renWin.reSize();
}
public static void main(String s[])
{
MCSCanvas panel = new MCSCanvas();
MCSCanvas panel2 = new MCSCanvas();
JFrame frame = new JFrame("VTK Canvas Test!");
frame.getContentPane().setLayout(new GridLayout(2,1));
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e) {System.exit(0);}
});
frame.getContentPane().add(panel);
frame.getContentPane().add(panel2);
frame.pack();
frame.setVisible(true);
}
}
More information about the vtkusers
mailing list