Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.BorderLayout;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.lang.reflect.Field;
- import javax.media.j3d.Canvas3D;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import org.jmol.adapter.smarter.SmarterJmolAdapter;
- import org.jmol.api.JmolViewer;
- import com.sun.j3d.utils.universe.SimpleUniverse;
- public class Test {
- public static void main(String[] args) {
- libraryPathTrick();
- canvas = new Canvas3D(
- SimpleUniverse.getPreferredConfiguration());
- SimpleUniverse universe = new SimpleUniverse(canvas);
- JFrame frame = new JFrame();
- frame.setPreferredSize(new Dimension(400, 500));
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- Container c = frame.getContentPane();
- JButton bttn = new JButton("Change view");
- c.setLayout(new BorderLayout());
- c.add(bttn, BorderLayout.PAGE_END);
- final JPanel viewPanel = new JPanel();
- viewPanel.setPreferredSize(new Dimension(400, 450));
- viewPanel.setLayout(new GridLayout());
- viewPanel.setDoubleBuffered(true);
- c.add(viewPanel, BorderLayout.CENTER);
- bttn.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- changeView(viewPanel);
- }
- });
- frame.pack();
- frame.setVisible(true);
- changeView(viewPanel);
- }
- public static boolean var = true;
- public static Canvas3D canvas = null;
- public static JmolPanel jmolPanel = new JmolPanel();
- public static void changeView(JPanel c) {
- c.removeAll();
- if (var) {
- c.add(canvas);
- } else {
- c.add(jmolPanel);
- }
- c.revalidate();
- var = !var;
- }
- public static void libraryPathTrick() {
- String javaLibraryPath = System.getProperty("java.library.path");
- System.setProperty("java.library.path", javaLibraryPath
- + ";C:\\Program Files\\Java\\Java3D\\1.5.2\\bin");
- Field fieldSysPath;
- try {
- fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
- fieldSysPath.setAccessible(true);
- fieldSysPath.set(null, null);
- } catch (Exception e) {
- }
- }
- }
- class JmolPanel extends JPanel {
- private static final long serialVersionUID = 1L;
- private JmolViewer viewer;
- private final Dimension currentSize = new Dimension();
- public JmolPanel() {
- viewer = JmolViewer.allocateViewer(this, new SmarterJmolAdapter(),
- null, null, null, null, null);
- }
- public JmolViewer getViewer() {
- return this.viewer;
- }
- @Override
- public void paint(Graphics g) {
- getSize(currentSize);
- viewer.renderScreenImage(g, currentSize.width, currentSize.height);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement