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

📄 propertiesframe.java

📁 运用java3D模拟刚体间的碰撞,爆炸及在万有引力作用下的运动轨迹,设置适当的参数可以模拟天体运动等多种物理现象.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		jLabel6.setVisible(true);
		prevButton.setLocation(new Point(20, 602));
		prevButton.setSize(new Dimension(80, 20));
		prevButton.setText("<< Prev");
		prevButton.setToolTipText("Click to go to the Previous Object");
		prevButton.setVisible(true);
		nextButton.setLocation(new Point(100, 602));
		nextButton.setSize(new Dimension(80, 20));
		nextButton.setText("Next >>");
		nextButton.setToolTipText("Click to go to the next Particle");
		nextButton.setVisible(true);
		setIconImage(img0);
		getContentPane().setLayout(null);
		setLocation(new Point(800, 0));
		setResizable(false);
		setTitle("Properties");

	/*	jPanel1.add(jLabel2);
		jPanel1.add(xPosition);
		jPanel1.add(jLabel3);
		jPanel1.add(yPosition);
		jPanel1.add(jLabel4);
		jPanel1.add(zPosition);
		
*/

		getContentPane().add(jLabel1);
		getContentPane().add(mass);
		getContentPane().add(updateButton);
		getContentPane().add(resetButton);
		getContentPane().add(jLabel10);
		getContentPane().add(radius);
		getContentPane().add(jPanel1);
		getContentPane().add(jPanel2);
		getContentPane().add(orientationPanel);
		getContentPane().add(angularVelPanel);
		getContentPane().add(name);
		getContentPane().add(elasticity);
		getContentPane().add(jLabel5);
		getContentPane().add(jLabel6);
		getContentPane().add(prevButton);
		getContentPane().add(nextButton);

		setSize(new java.awt.Dimension(209, 650));

		// event handling
		updateButton.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				updateButtonActionPerformed(e);
			}
		});
		resetButton.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				reset();
			}
		});
		prevButton.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				prevButtonActionPerformed(e);
			}
		});
		nextButton.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				nextButtonActionPerformed(e);
			}
		});

		if(mainFrame != null)
		{	
			Dimension d = getToolkit().getScreenSize();
			this.setLocation((int)d.getWidth() / 2 + mainFrame.getWidth() / 2, (int)d.getHeight() / 2 - getHeight() / 2);
			mainFrame.addComponentListener(new java.awt.event.ComponentAdapter() {
				public void componentMoved(java.awt.event.ComponentEvent e) {
					Dimension dm = getToolkit().getScreenSize();
					setLocation((int)mainFrame.getX() + mainFrame.getWidth(), (int)dm.getHeight() / 2 - getHeight() / 2);
				}
				public void componentResized(ComponentEvent e) {
					Dimension dm = getToolkit().getScreenSize();
					setLocation((int)mainFrame.getX() + mainFrame.getWidth(), (int)dm.getHeight() / 2 - getHeight() / 2);

				}
			});
		}
		if(currentObject == null)
		{
			name.setEnabled(false);
			mass.setEnabled(false);
			updateButton.setEnabled(false);
			resetButton.setEnabled(false);
			xPosition.setEnabled(false);
			yPosition.setEnabled(false);
			zPosition.setEnabled(false);
			xSpeed.setEnabled(false);
			ySpeed.setEnabled(false);
			zSpeed.setEnabled(false);
			radius.setEnabled(false);
			pitch.setEnabled(false);
			yaw.setEnabled(false);
			roll.setEnabled(false);
			pitchVel.setEnabled(false);
			yawVel.setEnabled(false);
			rollVel.setEnabled(false);
			elasticity.setEnabled(false);
			
		}

	}

	// Close the window when the close box is clicked
	void thisWindowClosing(java.awt.event.WindowEvent e) {
		JOptionPane.showMessageDialog(this, "To Quit Press the Close Button on the Main Window or use the File Menu", "Error!",  JOptionPane.ERROR_MESSAGE);
		
	}
	
	//Update the current object with the current values
	public void updateButtonActionPerformed(java.awt.event.ActionEvent e) {
		
		try
		{
			double xPos = Double.parseDouble(xPosition.getText());
			double yPos = Double.parseDouble(yPosition.getText());
			double zPos = Double.parseDouble(zPosition.getText());
			
			Vector3d newPosition = new Vector3d(xPos, yPos, zPos);
			
			double xSpd = Double.parseDouble(xSpeed.getText());
			double ySpd = Double.parseDouble(ySpeed.getText());
			double zSpd = Double.parseDouble(zSpeed.getText());
			
			Vector3d newSpeed = new Vector3d(xSpd, ySpd, zSpd);
			
			
			double p = Double.parseDouble(pitch.getText());
			double y = Double.parseDouble(yaw.getText());
			double r = Double.parseDouble(roll.getText());
									
			Quat4d orientation = Particle3D.makeQFromEulerAngles(p,y,r);
								
			double pv = Double.parseDouble(pitchVel.getText());
			double yv = Double.parseDouble(yawVel.getText());											
			double rv = Double.parseDouble(rollVel.getText());
			
			Vector3d angularV = new Vector3d(pv, yv, rv);
			
			double newMass = Double.parseDouble(mass.getText());
			
			double newRadius = Double.parseDouble(radius.getText());
			
			double newElasticity = Double.parseDouble(elasticity.getText());
			
			currentObject.setName(name.getText());
			currentObject.setMass(newMass);
			currentObject.setPosition(newPosition);
			currentObject.setSpeed(newSpeed);
			currentObject.setOrientation(orientation);
			currentObject.setAngularSpeed(angularV);
			currentObject.setRadius(newRadius);
			currentObject.setElasticity(newElasticity);
		
		}
		catch(Exception exp)
		{
			exp.printStackTrace();
			reset();
			JOptionPane.showMessageDialog(this, "Error You did not enter a number", "Error", JOptionPane.ERROR_MESSAGE);
		}
		
		Particle3DTracker.updateAll();
	
	}
	
			
	//Set the selected object		
	public void setObject(Particle3D newObject)
	{
		currentObject = newObject;
		System.out.println("Got New Object");
		if(newObject == null)
			System.out.println("Object Cleared");
		reset();
	}
	
	//Resets the text fields to the current values of the object
	public void reset()
	{
		if(currentObject == null)
		{
			name.setEnabled(false);
			mass.setEnabled(false);
			updateButton.setEnabled(false);
			resetButton.setEnabled(false);
			xPosition.setEnabled(false);
			yPosition.setEnabled(false);
			zPosition.setEnabled(false);
			xSpeed.setEnabled(false);
			ySpeed.setEnabled(false);
			zSpeed.setEnabled(false);
			pitch.setEnabled(false);
			yaw.setEnabled(false);
			roll.setEnabled(false);
			pitchVel.setEnabled(false);
			yawVel.setEnabled(false);
			rollVel.setEnabled(false);
			radius.setEnabled(false);
			elasticity.setEnabled(false);
			
		}
		else
		{
			name.setText(currentObject.getName());
			
			mass.setText(Double.toString(currentObject.getMass()));
			
			Vector3d position = currentObject.getPosition();
			
			xPosition.setText(Double.toString(position.x));
			yPosition.setText(Double.toString(position.y));
			zPosition.setText(Double.toString(position.z));
			
			Vector3d speed = currentObject.getSpeed();
			
			xSpeed.setText(Double.toString(speed.x));
			ySpeed.setText(Double.toString(speed.y));
			zSpeed.setText(Double.toString(speed.z));
			
			
			Vector3d orientation = Particle3D.makeEulerAnglesFromQ(currentObject.getOrientation());
			Vector3d angularSpeed = currentObject.getAngularSpeed();
			
			pitch.setText(Double.toString(orientation.x));
			yaw.setText(Double.toString(orientation.y));
			roll.setText(Double.toString(orientation.z));
			
			pitchVel.setText(Double.toString(angularSpeed.x));
			yawVel.setText(Double.toString(angularSpeed.y));
			rollVel.setText(Double.toString(angularSpeed.z));
			
			radius.setText(Double.toString(currentObject.getRadius()));
			elasticity.setText(Double.toString(currentObject.getElasticity()));
			
			name.setEnabled(true);
			mass.setEnabled(true);
			updateButton.setEnabled(true);
			resetButton.setEnabled(true);
			xPosition.setEnabled(true);
			yPosition.setEnabled(true);
			zPosition.setEnabled(true);
			xSpeed.setEnabled(true);
			ySpeed.setEnabled(true);
			zSpeed.setEnabled(true);
			pitch.setEnabled(true);
			yaw.setEnabled(true);
			roll.setEnabled(true);
			pitchVel.setEnabled(true);
			yawVel.setEnabled(true);
			rollVel.setEnabled(true);
			radius.setEnabled(true);
			elasticity.setEnabled(true);
			
		}
	}
	
	//Get the next / previous objects
	public void nextButtonActionPerformed(java.awt.event.ActionEvent e) {
		if(currentObject == null)
		{
			currentObject = (Particle3D)Particle3D.getParticles()[0];
			
		}
		else
		{
			currentObject.setAppearance(Physics3DThread.getNormalAppearance());
			currentObject = Particle3D.getNextParticle(currentObject);
		}
		currentObject.setAppearance(Physics3DThread.getSelectedAppearance());
		mainFrame.t.setLastShape(currentObject.getShape3D());
		reset();
	}	
	
	public void prevButtonActionPerformed(java.awt.event.ActionEvent e) {
		if(currentObject == null)
		{
			currentObject = (Particle3D)Particle3D.getParticles()[0];
			
		}
		else
		{
			currentObject.setAppearance(Physics3DThread.getNormalAppearance());
			currentObject = Particle3D.getPrevParticle(currentObject);
		}
		currentObject.setAppearance(Physics3DThread.getSelectedAppearance());
		mainFrame.t.setLastShape(currentObject.getShape3D());
		reset();
	}
	
	
	public void windowStateChanged(WindowEvent e)
	{
		if(mainFrame != null)
		{	
			Dimension d = getToolkit().getScreenSize();
			this.setLocation((int)d.getWidth() / 2 + mainFrame.getWidth() / 2, (int)d.getHeight() / 2 - getHeight() / 2);
		}	
	}
	
}

⌨️ 快捷键说明

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