Advertisement
Guest User

Untitled

a guest
Nov 29th, 2012
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.71 KB | None | 0 0
  1. import java.awt.BorderLayout;
  2. import java.awt.Container;
  3. import java.awt.Dimension;
  4. import java.awt.Graphics;
  5. import java.awt.GridLayout;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.lang.reflect.Field;
  9.  
  10. import javax.media.j3d.Canvas3D;
  11. import javax.swing.JButton;
  12. import javax.swing.JFrame;
  13. import javax.swing.JPanel;
  14.  
  15. import org.jmol.adapter.smarter.SmarterJmolAdapter;
  16. import org.jmol.api.JmolViewer;
  17.  
  18. import com.sun.j3d.utils.universe.SimpleUniverse;
  19.  
  20. public class Test {
  21.  
  22.     public static void main(String[] args) {
  23.         libraryPathTrick();
  24.         canvas = new Canvas3D(
  25.                 SimpleUniverse.getPreferredConfiguration());
  26.         SimpleUniverse universe = new SimpleUniverse(canvas);
  27.         JFrame frame = new JFrame();
  28.         frame.setPreferredSize(new Dimension(400, 500));
  29.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  30.         Container c = frame.getContentPane();
  31.         JButton bttn = new JButton("Change view");
  32.        
  33.         c.setLayout(new BorderLayout());
  34.         c.add(bttn, BorderLayout.PAGE_END);
  35.        
  36.         final JPanel viewPanel = new JPanel();
  37.         viewPanel.setPreferredSize(new Dimension(400, 450));
  38.         viewPanel.setLayout(new GridLayout());
  39.         viewPanel.setDoubleBuffered(true);
  40.        
  41.         c.add(viewPanel, BorderLayout.CENTER);
  42.         bttn.addActionListener(new ActionListener() {
  43.  
  44.             @Override
  45.             public void actionPerformed(ActionEvent e) {
  46.                 changeView(viewPanel);
  47.             }
  48.         });
  49.         frame.pack();
  50.         frame.setVisible(true);
  51.         changeView(viewPanel);
  52.     }
  53.  
  54.     public static boolean var = true;
  55.  
  56.     public static Canvas3D canvas = null;
  57.     public static JmolPanel jmolPanel = new JmolPanel();
  58.    
  59.     public static void changeView(JPanel c) {
  60.          c.removeAll();
  61.         if (var) {
  62.             c.add(canvas);
  63.         } else {
  64.             c.add(jmolPanel);
  65.         }
  66.         c.revalidate();
  67.         var = !var;
  68.     }
  69.  
  70.     public static void libraryPathTrick() {
  71.         String javaLibraryPath = System.getProperty("java.library.path");
  72.         System.setProperty("java.library.path", javaLibraryPath
  73.                 + ";C:\\Program Files\\Java\\Java3D\\1.5.2\\bin");
  74.  
  75.         Field fieldSysPath;
  76.         try {
  77.             fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
  78.             fieldSysPath.setAccessible(true);
  79.             fieldSysPath.set(null, null);
  80.         } catch (Exception e) {
  81.         }
  82.     }
  83.  
  84. }
  85.  
  86. class JmolPanel extends JPanel {
  87.  
  88.     private static final long serialVersionUID = 1L;
  89.     private JmolViewer viewer;
  90.     private final Dimension currentSize = new Dimension();
  91.  
  92.     public JmolPanel() {
  93.         viewer = JmolViewer.allocateViewer(this, new SmarterJmolAdapter(),
  94.                 null, null, null, null, null);
  95.     }
  96.  
  97.     public JmolViewer getViewer() {
  98.         return this.viewer;
  99.     }
  100.  
  101.     @Override
  102.     public void paint(Graphics g) {
  103.         getSize(currentSize);
  104.         viewer.renderScreenImage(g, currentSize.width, currentSize.height);
  105.     }
  106.  
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement