📄 jtrackergui.java
字号:
ymax = Math.max(ymax, sensorYmeter); ymin = Math.min(ymin, sensorYmeter); animating = true; paused = false; startThread(); } } } }private class LeftPanel extends JPanel { public JTextField Qin, Xin, Yin, Xvel, Yvel, Xsensor, Ysensor, MCIter, Timestep, Npart; public JComboBox DeltaT; public JButton startButton, clearButton; public JLabel Seperator; public LeftPanel() { Qin = new JTextField("10"); Xin = new JTextField("500, 500"); Yin = new JTextField("10, 10, 1"); Xvel = new JTextField("-30"); Yvel = new JTextField("-30"); Xsensor = new JTextField("0"); Ysensor = new JTextField("0"); MCIter = new JTextField("2"); Timestep = new JTextField("50"); Npart = new JTextField("1000"); DeltaT = new JComboBox(); startButton = new JButton(); clearButton = new JButton();/* Qin.setToolTipText("Set the noise/interference from the sensor."); Xin.setToolTipText("Initial coordinates of the target in meters: x, y."); Yin.setToolTipText("Standard deviation of sensor error: range (m), range rate (m/s), angle (degrees)."); Xvel.setToolTipText("The target's horizontal velocity. (meters/sec)"); Yvel.setToolTipText("The target's vertical velocity. (meters/sec)"); Xsensor.setToolTipText("Horizontal position of the sensor location. (meters)"); Ysensor.setToolTipText("Vertical position of the sensor location. (meters)"); MCIter.setToolTipText("Numer of Monte Carlo iterations for the simulation."); Timestep.setToolTipText("Number of time increments per MC iteration"); Npart.setToolTipText("Number of Monte Carlo samples"); DeltaT.setToolTipText("Length of each increment (seconds)"); startButton.setToolTipText("Click Button to start tracking simulation."); clearButton.setToolTipText("Click Button to reset to defaults.");*/ DeltaT.addItem("1 sec"); DeltaT.addItem("2 sec"); DeltaT.addItem("3 sec"); DeltaT.addItem("4 sec"); DeltaT.setBackground(new Color(10, 238, 99)); DeltaT.setPreferredSize(new Dimension(50, 18)); Seperator = new JLabel(); Xin.setPreferredSize(new Dimension(105, 22)); Yin.setPreferredSize(new Dimension(105, 22)); Xvel.setPreferredSize(new Dimension(105, 22)); Yvel.setPreferredSize(new Dimension(105, 22)); Xsensor.setPreferredSize(new Dimension(105, 24)); Ysensor.setPreferredSize(new Dimension(105, 24)); MCIter.setPreferredSize(new Dimension(105, 18)); Seperator.setPreferredSize(new Dimension(105, 40)); Qin.setPreferredSize(new Dimension(105, 18)); Timestep.setPreferredSize(new Dimension(105, 18)); Npart.setPreferredSize(new Dimension(105, 18)); DeltaT.setPreferredSize(new Dimension(105, 18)); startButton.setPreferredSize(new Dimension(100,55)); Xin.addActionListener(new XinListener()); Yin.addActionListener(new YinListener()); Xsensor.addActionListener(new XsensorListener()); Ysensor.addActionListener(new YsensorListener()); Ysensor.addMouseListener(new Ysmouse()); Xin.addMouseListener(new Xinmouse()); Yin.addMouseListener(new Yinmouse()); Xvel.addMouseListener(new Xvelmouse()); Yvel.addMouseListener(new Yvelmouse()); Xsensor.addMouseListener(new Xsmouse()); MCIter.addMouseListener(new MCmouse()); Qin.addMouseListener(new Qinmouse()); Timestep.addMouseListener(new Timemouse()); Npart.addMouseListener(new Npartmouse()); DeltaT.addMouseListener(new Deltamouse()); Icon starticon = new ImageIcon( getClass().getResource("startbutton.JPG")); startButton.setIcon(starticon); // startButton = new JButton("Start"); clearButton = new JButton("Reset"); startButton.addActionListener(new startListener()); clearButton.addActionListener(new clearListener()); startButton.addMouseListener(new starmouse()); clearButton.addMouseListener(new clearmouse()); setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); add(Xin, 0); add(Yin, 1); add(Xvel, 2); add(Yvel, 3); add(Xsensor, 4); add(Ysensor, 5); add(Seperator, 6); //add some space between the path and particle filter inputs add(MCIter, 7); add(Qin, 8); add(Npart, 9); add(Timestep, 10); add(DeltaT, 11); add(startButton, 12); add(clearButton, 13); } } private class Ysmouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("Vertical position of the sensor location. (meters)"); } public void mouseExited(MouseEvent e) {} } private class Xsmouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("Horizontal position of the sensor location. (meters)"); } public void mouseExited(MouseEvent e) {} } private class Xinmouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("Initial coordinates of the target in meters: x, y"); } public void mouseExited(MouseEvent e) {} } private class Yinmouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("Standard deviation of sensor error: range (m), range rate (m/s), angle (degrees)"); } public void mouseExited(MouseEvent e) {} } private class Xvelmouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("The target's horizontal velocity. (meters/sec)"); } public void mouseExited(MouseEvent e) {} } private class Yvelmouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("The target's vertical velocity. (meters/sec)"); } public void mouseExited(MouseEvent e) {} } private class MCmouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("Numer of Monte Carlo iterations for the simulation."); } public void mouseExited(MouseEvent e) {} } private class Timemouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("Number of time increments per MC iteration"); } public void mouseExited(MouseEvent e) {} } private class Deltamouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("Length of each increment (seconds)"); } public void mouseExited(MouseEvent e) {} } private class Npartmouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("Number of Monte Carlo samples"); } public void mouseExited(MouseEvent e) {} } private class Qinmouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("Set the noise/interference from the path."); } public void mouseExited(MouseEvent e) {} } private class starmouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("Click Button to Start Tracking Simulation"); } public void mouseExited(MouseEvent e) {} } private class clearmouse implements MouseListener { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { helpinfo.setText("Click Button to Reset to Defaults."); } public void mouseExited(MouseEvent e) {} } private class startListener implements ActionListener { private String tryString; public void actionPerformed (ActionEvent event) { animator = null; paused = false; frame = 0; tryString = lp.MCIter.getText(); success = false; while(!success) { try { niter = Integer.parseInt(tryString); } catch (NumberFormatException exception) { dialogInput = JOptionPane.showInputDialog(null,"Please reenter the number of iterations.","Invalid MC iterations",JOptionPane.ERROR_MESSAGE, null, null, tryString); try{tryString = dialogInput.toString();} catch(NullPointerException e){} continue; } success=true; } lp.MCIter.setText(Integer.toString(niter)); MC = niter; tryString = lp.Xvel.getText(); success = false; while(!success) { try { xvelocity = Double.parseDouble(tryString); } catch (NumberFormatException exception) { dialogInput = JOptionPane.showInputDialog(null,"Please reenter x velocity.","Invalid x velocity",JOptionPane.ERROR_MESSAGE, null, null, tryString); try{tryString = dialogInput.toString();} catch(NullPointerException e){} continue; } success=true; } lp.Xvel.setText(Double.toString(xvelocity)); tryString = lp.Yvel.getText(); success = false; while(!success) { try { yvelocity = Double.parseDouble(tryString); } catch (NumberFormatException exception) { dialogInput = JOptionPane.showInputDialog(null,"Please reenter y velocity.","Invalid y velocity",JOptionPane.ERROR_MESSAGE, null, null, tryString); try{tryString = dialogInput.toString();} catch(NullPointerException e){} continue; } success=true; } lp.Yvel.setText(Double.toString(yvelocity)); tryString = lp.Qin.getText(); success = false; while(!success) { try { Qval = Double.parseDouble(tryString); } catch (NumberFormatException exception) { dialogInput = JOptionPane.showInputDialog(null,"Please reenter Q (noise intensity).","Invalid Q value",JOptionPane.ERROR_MESSAGE, null, null, tryString); try{tryString = dialogInput.toString();} catch(NullPointerException e){} continue; } success=true; } lp.Qin.setText(Double.toString(Qval)); tryString = lp.Xsensor.getText(); success = false; while(!success) { try { sensorXmeter = Double.parseDouble(tryString); } catch (NumberFormatException exception) { dialogInput = JOptionPane.showInputDialog(null,"Please reenter sensor x position.","Invalid Sensor X",JOptionPane.ERROR_MESSAGE, null, null, tryString); try{tryString = dialogInput.toString();} catch(NullPointerException e){} continue; } success=true; } lp.Xsensor.setText(Double.toString(sensorXmeter)); tryString = lp.Ysensor.getText(); success = false; while(!success) { try { sensorYmeter = Double.parseDouble(tryString); } catch (NumberFormatException exception) { dialogInput = JOptionPane.showInputDialog(null,"Please reenter sensor y position.","Invalid Sensor Y",JOptionPane.ERROR_MESSAGE, null, null, tryString); try{tryString = dialogInput.toString();} catch(NullPointerException e){} continue; } success=true; } lp.Ysensor.setText(Double.toString(sensorYmeter)); tryString = lp.Npart.getText(); success = false; while(!success) { try { numParts = Integer.parseInt(tryString); } catch (NumberFormatException exception) { dialogInput = JOptionPane.showInputDialog(null,"Please reenter the number of particles.","Invalid number of particles",JOptionPane.ERROR_MESSAGE, null, null, tryString); try{tryString = dialogInput.toString();} catch(NullPointerException e){} continue; } success=true; } lp.Npart.setText(Integer.toString(numParts)); tryString = lp.Timestep.getText(); success = false; while(!success) { try { length = Integer.parseInt(tryString); } catch (NumberFormatException exception) { dialogInput = JOptionPane.showInputDialog(null,"Please reenter the number of time steps.","Invalid number of time steps",JOptionPane.ERROR_MESSAGE, null, null, tryString); try{tryString = dialogInput.toString();} catch(NullPointerException e){} continue; } success=true; } lp.Timestep.setText(Integer.toString(length)); deltaT=lp.DeltaT.getSelectedIndex()+1; fps = 1.0/deltaT; pathErrorPanel.error=new double[length]; measErrorPanel.error=new double[length]; ploterror=false; pathErrorPanel.repaint(); measErrorPanel.repaint(); tokenizer = new StringTokenizer(lp.Xin.getText(),"(), ", false); token = (tokenizer.hasMoreTokens()) ? tokenizer.nextToken() : "x position"; success = false; while(!success) { try { xin=Double.parseDouble(token);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -