📄 graph3dappframe.java
字号:
package myprojects.graph3dapp;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import java.io.*;
import javax.imageio.*;
/**
* @(#)Graph2DApp.java
*
* JFC Sample application
*
* @author
* @version 1.00 05/02/02
*/
public class Graph3DAppFrame extends JFrame {
BufferedImage image = null; //缓存图像
Canvas3D canvas;
JScrollPane scrollPane;
Camera camera;
JMenuBar menuBar = new JMenuBar();
JMenu menuFile = new JMenu();
JMenuItem menuFileExit = new JMenuItem();
/**
* The constructor.
*/
public Graph3DAppFrame() {
// Add window listener.
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Graph3DAppFrame.this.windowClosed();
}
}
);
image = new BufferedImage(400, 400, BufferedImage.TYPE_INT_ARGB);
Graphics g = image.getGraphics();
g.setColor(Color.white);
g.fillRect(0,0,image.getWidth(), image.getHeight());
canvas = new Canvas3D(image);
camera = new Camera();
camera.setCanvasSize(image.getWidth(), image.getHeight());
canvas.setCamera(camera);
Material m;
Box box = new Box(new Vector3d(-1, -1, -1), 2, 2, 2);
box.rotateY((double)Math.PI/6);
box.rotateX((double)Math.PI/6);
m = new Material();
m.setKd(1, 1, 0);
box.setMaterial(m);
//box.scale(0.9, 0.9, 0.9);
canvas.add(box);
//box.scale(0.5f, 0.5f, 0.5f);
Cone cone = new Cone(new Vector3d(0, -1, 0), 1.2, 3, 100);
m = new Material();
m.setKd(1, 0, 0);
cone.setMaterial(m);
cone.rotateY((double)Math.PI/2);
cone.rotateX((double)Math.PI/6);
cone.translate(0, 0, 0);
canvas.add(cone);
/*box = new Box(new Vector3d(-1, -1, -1), 2, 2, 2);
m = new Material();
m.setKd(0, 0, 1);
box.setMaterial(m);
box.rotateY((double)Math.PI/6);
box.rotateX((double)Math.PI/6);
box.translate(-1, -0.5, 0);
canvas.add(box);*/
System.out.println("start");
canvas.refresh();
System.out.println("end");
initComponents();
}
protected void initComponents() {
Container contentPane = getContentPane();
scrollPane = new JScrollPane(canvas);
contentPane.add(scrollPane, BorderLayout.CENTER);
Icon fileIcon = new ImageIcon("images/file.gif");
Icon newIcon = new ImageIcon("images/new.gif");
Icon openIcon = new ImageIcon("images/open.gif");
Icon saveIcon = new ImageIcon("images/save.gif");
Icon lineIcon = new ImageIcon("images/line.gif");
Icon rectIcon = new ImageIcon("images/rect.gif");
Icon circleIcon = new ImageIcon("images/circle.gif");
Icon parabolaIcon = new ImageIcon("images/parabola.gif");
Icon splineIcon = new ImageIcon("images/spline.gif");
Icon bezierIcon = new ImageIcon("images/bezier.gif");
Icon bsplineIcon = new ImageIcon("images/bspline.gif");
Icon polygonIcon = new ImageIcon("images/polygon.gif");
Icon textIcon = new ImageIcon("images/text.gif");
menuFile.setText("File");
menuFileExit.setText("Exit");
menuFileExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Graph3DAppFrame.this.windowClosed();
}
}
);
menuFile.add(menuFileExit);
menuBar.add(menuFile);
setJMenuBar(menuBar);
}
protected void windowClosed() {
System.exit(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -