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

📄 settingsframe.java

📁 运用java3D模拟刚体间的碰撞,爆炸及在万有引力作用下的运动轨迹,设置适当的参数可以模拟天体运动等多种物理现象.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		Accuracy.add(jLabel2);
		Accuracy.add(accuracy);
		Accuracy.add(timeMultiplier);
		Accuracy.add(jLabel4);
		Accuracy.add(tracksPSecond);
		Accuracy.add(jLabel3);
		Accuracy.add(trackingChkBox);
		World.add(jLabel1);
		World.add(gravity);
		World.add(jPanel1);
		jPanel1.add(bbLeft);
		jPanel1.add(bbTop);
		jPanel1.add(bbFront);
		jPanel1.add(bbRight);
		jPanel1.add(bbBottom);
		jPanel1.add(bbBack);
		jPanel1.add(jLabel5);
		jPanel1.add(jLabel6);
		jPanel1.add(jLabel7);
		jPanel1.add(jLabel8);
		jPanel1.add(jLabel9);
		jPanel1.add(jLabel10);
		jPanel1.add(boundingBox);
		Collisions.add(explosion);
		Collisions.add(bounce);
		Collisions.add(jPanel3);
		Collisions.add(jPanel2);
		jPanel2.add(blastRadius);
		jPanel2.add(jLabel11);
		getContentPane().add(okButton);
		getContentPane().add(cancelButton);
		getContentPane().add(jTabbedPane1);

		jTabbedPane1.setSelectedIndex(2);
		trackingChkBox.setSelected(true);
		setSize(new java.awt.Dimension(378, 267));

		// event handling
		okButton.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				okButtonActionPerformed(e);
			}
		});
		cancelButton.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				cancelButtonActionPerformed(e);
			}
		});
		trackingChkBox.addChangeListener(new javax.swing.event.ChangeListener() {
			public void stateChanged(javax.swing.event.ChangeEvent e) {
				trackingChkBoxStateChanged(e);
			}
		});
		boundingBox.addChangeListener(new javax.swing.event.ChangeListener() {
			public void stateChanged(javax.swing.event.ChangeEvent e) {
				boundingBoxStateChanged(e);
			}
		});
		explosion.addItemListener(new java.awt.event.ItemListener() {
			public void itemStateChanged(java.awt.event.ItemEvent e) {
				explosionItemStateChanged(e);
			}
		});
		bounce.addItemListener(new java.awt.event.ItemListener() {
			public void itemStateChanged(java.awt.event.ItemEvent e) {
				bounceItemStateChanged(e);
			}
		});
		addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent e) {
				thisWindowClosing(e);
			}
		});

// END GENERATED CODE
		Dimension screenSize = getToolkit().getScreenSize();
		setLocation(((int)screenSize.getWidth() / 2) - (this.getWidth() / 2), ((int)screenSize.getHeight() / 2) - (this.getHeight() / 2));

		gravity.setText(Double.toString(Particle3D.getGravity()));
		accuracy.setText(Double.toString(1.0 / (Physics3DThread.getAccuracy() / 1000.0)));
		trackingChkBox.setSelected(Particle3D.getTraceNumFrames() != -1);
		if(trackingChkBox.isSelected())
			tracksPSecond.setText(Double.toString((1.0 / (Physics3DThread.getAccuracy() / 1000.0)) / ((double)Particle3D.getTraceNumFrames())));
		
		timeMultiplier.setText(Float.toString(Physics3DThread.getTimeMultiplier()));
		
		Point3d ufr = Particle3D.getUFRBounding(), lbl = Particle3D.getLBLBounding();
		
		if(ufr == null || lbl == null)
			boundingBox.setSelected(false);
		else
		{
			boundingBox.setSelected(true);
			bbRight.setText(Double.toString(ufr.x));
			bbTop.setText(Double.toString(ufr.y));
			bbFront.setText(Double.toString(ufr.z));
			bbLeft.setText(Double.toString(lbl.x));
			bbBottom.setText(Double.toString(lbl.y));
			bbBack.setText(Double.toString(lbl.z));
			
		}
		
		if(Particle3D.getCollsionHandling() == Particle3D.MOMENTUM)
		{
			bounce.setSelected(true);
			explosion.setSelected(false);
		}
		else
		{
			bounce.setSelected(false);
			explosion.setSelected(true);
		}
		
		jTabbedPane1.setSelectedIndex(0);
			
		
	}
  
  	private boolean mShown = false;
  	
	public void addNotify() {
		super.addNotify();
		
		if (mShown)
			return;
			
		// resize frame to account for menubar
		JMenuBar jMenuBar = getJMenuBar();
		if (jMenuBar != null) {
			int jMenuBarHeight = jMenuBar.getPreferredSize().height;
			Dimension dimension = getSize();
			dimension.height += jMenuBarHeight;
			setSize(dimension);
			
			// move down components in layered pane
			Component[] components = getLayeredPane().getComponentsInLayer(JLayeredPane.DEFAULT_LAYER.intValue());
			for (int i = 0; i < components.length; i++) {
				Point location = components[i].getLocation();
				location.move(location.x, location.y + jMenuBarHeight);
				components[i].setLocation(location);
			}
		}

		mShown = true;
	}

	// Close the window when the close box is clicked
	void thisWindowClosing(java.awt.event.WindowEvent e) {
		setVisible(false);
		dispose();
	//	System.exit(0);
	}
	
	public void okButtonActionPerformed(java.awt.event.ActionEvent e) {
		
		try
		{
			Particle3D.setGravity(Double.parseDouble(gravity.getText()));
			
			if(boundingBox.isSelected())
				Particle3D.setBoundingBox(new Point3d(Double.parseDouble(bbRight.getText()),
														Double.parseDouble(bbTop.getText()),
														Double.parseDouble(bbFront.getText())),
											new Point3d(Double.parseDouble(bbLeft.getText()),
															Double.parseDouble(bbBottom.getText()),
															Double.parseDouble(bbBack.getText())));
			else
				Particle3D.setBoundingBox(null, null);
			
			Physics3DThread.setAccuracy((int)(1000.0 / Double.parseDouble(accuracy.getText())));
			if(trackingChkBox.isSelected())
				Particle3D.setTraceNumFrames(Math.max(1,(int)(Double.parseDouble(accuracy.getText()) / Double.parseDouble(tracksPSecond.getText()))));
			else
				Particle3D.setTraceNumFrames(-1);
			
			Physics3DThread.setTimeMultiplier(Float.parseFloat(timeMultiplier.getText()));
			
			//Set Collision Settings
			if(bounce.isSelected())
				Particle3D.setCollisionHandling(Particle3D.MOMENTUM);
			else
				Particle3D.setCollisionHandling(Particle3D.EXPLODE);
			
			
			/////////////////////////
		
		
			setVisible(false);
			dispose();
		
		
		}
		catch(Exception exp)
		{
			JOptionPane.showMessageDialog(this, "Error: One or more settings were not Numbers please try again.", 
											"Error!",  JOptionPane.ERROR_MESSAGE);
		}
	}
	
	public void cancelButtonActionPerformed(java.awt.event.ActionEvent e) {
		setVisible(false);
		dispose();
	}
	

	
	public void trackingChkBoxStateChanged(javax.swing.event.ChangeEvent e) {
		if(trackingChkBox.isSelected())
			tracksPSecond.setEnabled(true);
		else
			tracksPSecond.setEnabled(false);
	
	}
	
	
	
	public void boundingBoxStateChanged(javax.swing.event.ChangeEvent e) {
		if(boundingBox.isSelected())
		{
			bbRight.setEnabled(true);
			bbLeft.setEnabled(true);
			bbTop.setEnabled(true);
			bbBottom.setEnabled(true);
			bbFront.setEnabled(true);
			bbBack.setEnabled(true);
		}
		else
		{
			bbLeft.setEnabled(false);
			bbRight.setEnabled(false);
			bbTop.setEnabled(false);
			bbBottom.setEnabled(false);
			bbFront.setEnabled(false);
			bbBack.setEnabled(false);
		}
	
	}
	
	public void explosionItemStateChanged(java.awt.event.ItemEvent e) {
		if(explosion.isSelected())
			bounce.setSelected(false);
	
	}
	
	public void bounceItemStateChanged(java.awt.event.ItemEvent e) {
		if(bounce.isSelected())
			explosion.setSelected(false);
	}
									
		
}

⌨️ 快捷键说明

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