⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buttonspanel.java

📁 基于java的3d开发库。对坐java3d的朋友有很大的帮助。
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
//===========================================================================// Java basic classesimport java.io.File;import java.io.FileReader;import java.io.FileOutputStream;import java.io.BufferedReader;import java.util.StringTokenizer;import java.util.ArrayList;// Java GUI classesimport java.awt.BorderLayout;import java.awt.Component;import java.awt.Color;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.FlowLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.border.Border;import javax.swing.BorderFactory;import javax.swing.BoxLayout;import javax.swing.JFrame;import javax.swing.JFileChooser;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JMenuBar;import javax.swing.JPanel;import javax.swing.JTabbedPane;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.SwingUtilities;import javax.swing.UIManager;// JOGL Classesimport javax.media.opengl.GLCanvas;// VSDK Classesimport vsdk.toolkit.common.ColorRgb;import vsdk.toolkit.common.Matrix4x4;import vsdk.toolkit.common.Ray;import vsdk.toolkit.common.Vector3D;import vsdk.toolkit.common.VSDK;import vsdk.toolkit.gui.ProgressMonitorConsole;import vsdk.toolkit.media.Image;import vsdk.toolkit.media.IndexedColorImage;import vsdk.toolkit.media.RGBImage;import vsdk.toolkit.media.RGBAImage;import vsdk.toolkit.media.RGBColorPalette;import vsdk.toolkit.environment.Camera;import vsdk.toolkit.environment.Material;import vsdk.toolkit.environment.Light;import vsdk.toolkit.environment.geometry.Arrow;import vsdk.toolkit.environment.geometry.VoxelVolume;import vsdk.toolkit.environment.geometry.Box;import vsdk.toolkit.environment.geometry.Cone;import vsdk.toolkit.environment.geometry.Geometry;import vsdk.toolkit.environment.geometry.ParametricCurve;import vsdk.toolkit.environment.geometry.ParametricBiCubicPatch;import vsdk.toolkit.environment.geometry.PolyhedralBoundedSolid;import vsdk.toolkit.environment.geometry.Sphere;import vsdk.toolkit.environment.geometry.InfinitePlane;import vsdk.toolkit.environment.geometry.FunctionalExplicitSurface;import vsdk.toolkit.environment.geometry.TriangleMesh;import vsdk.toolkit.environment.geometry.TriangleMeshGroup;import vsdk.toolkit.environment.scene.SimpleBody;import vsdk.toolkit.environment.scene.SimpleBodyGroup;import vsdk.toolkit.environment.scene.SimpleScene;import vsdk.toolkit.io.XmlException;import vsdk.toolkit.io.geometry.EnvironmentPersistence;import vsdk.toolkit.io.image.RGBColorPalettePersistence;import vsdk.toolkit.io.image.ImagePersistence;// Internal classesimport vsdk.transition.gui.GuiCache;import vsdk.transition.io.presentation.GuiCachePersistence;import vsdk.transition.render.swing.SwingGuiCacheRenderer;public class ButtonsPanel extends JPanel implements ActionListener{    private SceneEditorApplication parent;    private String currentFilePathForReading;    private String currentFilePathForWriting;    public ButtonsPanel(SceneEditorApplication parent, int group)    {        //-------------------------------------------------------------------        this.parent = parent;        if ( group < 100 ) {            // This is a button group inside right tab panels            this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));            Border empty = BorderFactory.createEmptyBorder(10, 10, 10, 10);            this.setBorder(empty);        }        else {            // This is a button group part of an icon bar            this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));            Border empty = BorderFactory.createEmptyBorder(0, 0, 0, 0);            this.setBorder(empty);        }        currentFilePathForReading = (new File("")).getAbsolutePath() + "/../../../etc/geometry";        currentFilePathForWriting = ".";        //-------------------------------------------------------------------        JPanel internal = null;        switch ( group ) {          case 1:            internal =             SwingGuiCacheRenderer.buildButtonGroup(parent.gui, "CREATION", this);            break;          case 2:            internal =             SwingGuiCacheRenderer.buildButtonGroup(parent.gui, "GUI", this);            break;          case 3:            internal =             SwingGuiCacheRenderer.buildButtonGroup(parent.gui, "OTHER", this);            break;          case 4:            internal =             SwingGuiCacheRenderer.buildButtonGroup(parent.gui, "RENDER", this);            break;          case 101:            internal =             SwingGuiCacheRenderer.buildButtonGroup(parent.gui, "GLOBAL", this);            break;        }        if ( internal != null ) {            this.add(internal, BorderLayout.WEST);        }        //-------------------------------------------------------------------    }    private SimpleBody addDebugSphere(SimpleBody voxelBody, int groupIndex,                                      Vector3D cm, double averageDistance)    {        double r = (((double)groupIndex) / 31.0) * (2 * averageDistance);        VoxelVolume vv = (VoxelVolume)voxelBody.getGeometry();        Sphere sphere;        RGBAImage texture;        SimpleBody body;        double tetha, phi;        int s, t;        int voxelValue;        Vector3D p = new Vector3D();        Vector3D pos;        Vector3D scale, cm2;        Matrix4x4 S = new Matrix4x4();        sphere = new Sphere(r);        body = new SimpleBody();        body.setGeometry(sphere);        body.setMaterial(parent.theScene.defaultMaterial());        body.getMaterial().setDoubleSided(true);        scale = voxelBody.getScale();        S.scale(scale.x, scale.y, scale.z);        scale = scale.multiply(r);        body.setScale(scale);        cm2 = S.multiply(cm);        pos = voxelBody.getPosition().add(cm2);        body.setPosition(pos);        body.setRotation(new Matrix4x4());        body.setRotationInverse(new Matrix4x4());        body.setName("Debug sphere for harmonics " + groupIndex);        texture = new RGBAImage();        texture.init(64, 64);        //- Build sphere's texture map from voxel grid --------------------        for ( s = 0; s < texture.getXSize(); s++ ) {            for ( t = 0; t < texture.getYSize(); t++ ) {                tetha =             ((double)s) / ((double)texture.getXSize()) * Math.PI * 2;                phi =             ((double)t) / ((double)texture.getYSize()) * Math.PI;                p.setSphericalCoordinates(r, tetha, phi);                p = cm.add(p);                voxelValue = vv.getVoxelAtPosition(p.x, p.y, p.z);                if ( voxelValue < 128 ) {                    texture.putPixel(s, t, (byte)0, (byte)0, (byte)0, (byte)0);                }                else {                    texture.putPixel(s, t, (byte)0, (byte)0, (byte)0, (byte)255);                }            }        }        //-----------------------------------------------------------------        body.setTexture(texture);        return body;    }    private static PolyhedralBoundedSolid createCircle(        double cx, double cy, double rad, double h, int n)    {        PolyhedralBoundedSolid solid;        solid = new PolyhedralBoundedSolid();        solid.mvfs(new Vector3D(cx + rad, cy, h), 1, 1);        addArc(solid, 1, 1, cx, cy, rad, h, 0,             ((double)(n-1))*360.0/((double)n), n-1);        solid.smef(1, n, 1, 2);        solid.validateModel();        return solid;    }    private static void addArc(PolyhedralBoundedSolid solid,        int faceId, int vertexId,        double cx, double cy, double rad, double h, double phi1, double phi2,        int n)    {        double x, y, angle, inc;        int prev, i, nextVertexId;        angle = Math.toRadians(phi1);        inc = Math.toRadians(((phi2 - phi1) / ((double)n)));        prev = vertexId;        for ( i = 0; i < n; i++ ) {            angle += inc;            x = cx + rad * Math.cos(angle);            y = cy + rad * Math.sin(angle);            nextVertexId = solid.getMaxVertexId() + 1;            solid.smev(faceId, prev, nextVertexId, new Vector3D(x, y, h));            prev = nextVertexId;        }        solid.validateModel();    }    public void actionPerformed(ActionEvent ev) {        String label = ev.getActionCommand();        // This makes event compatible with ButtonGroup scheme of event        // handling        if ( ev.getSource() instanceof JButton ) {            JButton origin = (JButton)ev.getSource();            label = origin.getName();        }        executeCommand(label);    }    public void executeCommand(String label)    {        Light light;        //- FILE ----------------------------------------------------------        if ( label.equals("IDC_FILE_QUIT") ) {            System.exit(0);        }        //- EDIT ----------------------------------------------------------        //- CREATE --------------------------------------------------------        else if ( label.equals("IDC_CREATE_SPHERE") ) {            parent.theScene.addThing(new Sphere(1));        }        else if ( label.equals("IDC_CREATE_CONE") ) {            parent.theScene.addThing(new Cone(1, 0, 2));        }        else if ( label.equals("IDC_CREATE_CYLINDER") ) {            parent.theScene.addThing(new Cone(1, 1, 2));        }        else if ( label.equals("IDC_CREATE_CUBE") ) {            parent.theScene.addThing(new Box(1, 1, 1));        }        else if ( label.equals("IDC_CREATE_BOX") ) {            parent.theScene.addThing(new Box(1, 3, 2));        }        else if ( label.equals("IDC_CREATE_ARROW") ) {            parent.theScene.addThing(new Arrow(0.7, 0.3, 0.05, 0.1));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -