📄 ecgplotwindow.java
字号:
/* * plotWindow.java * * See EcgLicense.txt for License terms. *//** * * @author Mauricio Villarroel (m.villarroel@acm.og) */import javax.swing.JInternalFrame;import javax.swing.JOptionPane;import javax.swing.table.*;import javax.swing.JFrame;import java.awt.Graphics;import java.awt.*;import java.awt.event.*;import java.lang.Math.*;import java.util.Timer;import java.util.TimerTask;import java.util.Vector;public class EcgPlotWindow extends JInternalFrame implements AdjustmentListener { /************************************** * Colors for the Plotting Components * **************************************/ protected Color ecgPlotColor = Color.BLUE; protected Color frameLineColor = Color.BLACK; protected Color frameInsideLineColor = Color.LIGHT_GRAY; protected Color frameFillColor = Color.WHITE; protected Color axesNumColor = Color.GRAY; protected Color titleColor = Color.BLACK; protected Color bgColor = Color.WHITE; /********************************************* * These constants used in drawText() method * for placement of the text within a given * rectangular area. *********************************************/ final int CENTER = 0; final int LEFT = 1; final int RIGHT = 2; /******************* * Frame Dimensions. *******************/ final int posFrameX =0; final int posFrameY =1; final int frameHeight =290; final int frameAmplitude = frameHeight/2; //Coordinates Origin final int posOriginY = posFrameY + (frameHeight/2); //X coordinates final int horzScaleY = posFrameY + frameHeight; final int horzScaleWidth = 100; final int horzScaleHeight = 20; final int fScaleNumSize = 9; /**************************************************** * Limit below which scale values use decimal format, * above which they use scientific format. ****************************************************/ double upLimit = 100.0; double loLimit = 0.01; /****************************** * Ploting variables ******************************/ boolean readyToPlot; int plotScrollBarValue; double plotZoom = 0.008; double plotZoomInc = 2; /* Flag Variable, show if data has been generated. */ private boolean ecgGenerated = false; /******************************* * Variable for the Data table *******************************/ private String[] peakStr = {"", "P", "Q", "R", "S", "T"}; /****************************************** * Variables to Animate ECG ******************************************/ //Animating in process? private boolean ecgAnimateFlg =false; Timer ecgAnimateTimer; private long ecgAnimateInterval; /* Total plotting Data Table Row */ private int ecgAnimateNumRows; /* Current plotting Data Table Row */ private int ecgAnimateCurRow; /* Plot Area Panel width */ private int ecgAnimatePanelWidth; /* Starting X axis value to plot*/ private int ecgAnimateInitialZero; /* For plotting */ Point ecgAnimateLastPoint = new java.awt.Point(0, 0); /** Creates new form plotWindow */ public EcgPlotWindow(EcgParam parameters, EcgLogWindow logOb, EcgApplication application) { initComponents(); paramOb = parameters; calcOb = new EcgCalc(paramOb, logOb); ecgLog = logOb; mainApp = application; initWindow(); } private void initWindow(){ this.setSize(850,475); /********************* *Init the main Window *Set maximize *********************/ /*try{ ecgWindow.setMaximum(true); } catch(java.beans.PropertyVetoException e){ txtStatus.append("Exception Error : " + e + "\n"); }*/ /********************* *Init the data Table *********************/ tableValuesModel = new DefaultTableModel( new Object [][] {}, new String [] {"Time", "Voltage", "Peak"}){ Class[] types = new Class [] { java.lang.String.class, java.lang.String.class, java.lang.String.class }; public Class getColumnClass(int columnIndex) { return types [columnIndex]; } }; tableValues.setModel(tableValuesModel); /* Init the ecgFrame */ ecgFrame = new ecgPanel(); ecgFrame.setBackground(new java.awt.Color(255, 255, 255)); ecgPlotArea.setViewportView(ecgFrame); /* Set the ScrollBar */ plotScrollBar.addAdjustmentListener(this); /************************* * Reset all Application * to a init state. *************************/ resetECG(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents plotToolBar = new javax.swing.JToolBar(); jSeparator2 = new javax.swing.JSeparator(); jLabel3 = new javax.swing.JLabel(); generateButton = new javax.swing.JButton(); jSeparator4 = new javax.swing.JSeparator(); jLabel2 = new javax.swing.JLabel(); zoomInButton = new javax.swing.JButton(); zoomOutButton = new javax.swing.JButton(); jSeparator3 = new javax.swing.JSeparator(); jLabel1 = new javax.swing.JLabel(); animateStartButton = new javax.swing.JButton(); animateStopButton = new javax.swing.JButton(); jSeparator1 = new javax.swing.JSeparator(); mainPanel = new javax.swing.JPanel(); ecgPlotArea = new javax.swing.JScrollPane(); plotScrollBar = new javax.swing.JScrollBar(); lblMinAmplitude = new javax.swing.JLabel(); lblOrigin = new javax.swing.JLabel(); lblMaxAmplitude = new javax.swing.JLabel(); jTextArea1 = new javax.swing.JTextArea(); TableScrollPane = new javax.swing.JScrollPane(); tableValues = new javax.swing.JTable(); closeButton = new javax.swing.JButton(); exportButton = new javax.swing.JButton(); clearButton = new javax.swing.JButton(); setClosable(true); setIconifiable(true); setMaximizable(true); setResizable(true); setTitle("Plot ECG"); plotToolBar.setBorder(new javax.swing.border.EtchedBorder(null, java.awt.Color.lightGray)); plotToolBar.setRollover(true); plotToolBar.setMinimumSize(new java.awt.Dimension(234, 30)); plotToolBar.setPreferredSize(new java.awt.Dimension(234, 30)); plotToolBar.setAutoscrolls(true); jSeparator2.setMaximumSize(new java.awt.Dimension(1000, 32767)); plotToolBar.add(jSeparator2); jLabel3.setText("Generate:"); plotToolBar.add(jLabel3); generateButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("img/execute2.gif"))); generateButton.setToolTipText("Generate System"); generateButton.setMaximumSize(new java.awt.Dimension(22, 22)); generateButton.setMinimumSize(new java.awt.Dimension(22, 22)); generateButton.setPreferredSize(new java.awt.Dimension(22, 22)); generateButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { generateButtonActionPerformed(evt); } }); plotToolBar.add(generateButton); jSeparator4.setMaximumSize(new java.awt.Dimension(1000, 32767)); plotToolBar.add(jSeparator4); jLabel2.setText("Zoom:"); plotToolBar.add(jLabel2); zoomInButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("img/tbzoomin.png"))); zoomInButton.setToolTipText("Zoom In"); zoomInButton.setMargin(new java.awt.Insets(0, 0, 0, 0)); zoomInButton.setMaximumSize(new java.awt.Dimension(22, 22)); zoomInButton.setMinimumSize(new java.awt.Dimension(22, 22)); zoomInButton.setPreferredSize(new java.awt.Dimension(22, 22)); zoomInButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { zoomInButtonActionPerformed(evt); } }); plotToolBar.add(zoomInButton); zoomOutButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("img/tbzoomout.png"))); zoomOutButton.setToolTipText("Zoom Out"); zoomOutButton.setMaximumSize(new java.awt.Dimension(22, 22)); zoomOutButton.setMinimumSize(new java.awt.Dimension(22, 22)); zoomOutButton.setPreferredSize(new java.awt.Dimension(22, 22)); zoomOutButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { zoomOutButtonActionPerformed(evt); } }); plotToolBar.add(zoomOutButton); jSeparator3.setMaximumSize(new java.awt.Dimension(1000, 32767)); plotToolBar.add(jSeparator3); jLabel1.setText("Animate:"); plotToolBar.add(jLabel1); animateStartButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("img/ball_green.gif"))); animateStartButton.setToolTipText("Start Animation"); animateStartButton.setMaximumSize(new java.awt.Dimension(22, 22)); animateStartButton.setMinimumSize(new java.awt.Dimension(22, 22)); animateStartButton.setPreferredSize(new java.awt.Dimension(22, 22)); animateStartButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { animateStartButtonActionPerformed(evt); } }); plotToolBar.add(animateStartButton); animateStopButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("img/ball_red.gif"))); animateStopButton.setToolTipText("Stop Animation"); animateStopButton.setMaximumSize(new java.awt.Dimension(22, 22)); animateStopButton.setMinimumSize(new java.awt.Dimension(22, 22)); animateStopButton.setPreferredSize(new java.awt.Dimension(22, 22)); animateStopButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { animateStopButtonActionPerformed(evt); } }); plotToolBar.add(animateStopButton); plotToolBar.add(jSeparator1); getContentPane().add(plotToolBar, java.awt.BorderLayout.NORTH);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -