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

📄 areaviewer.java

📁 传感器网络操作系统contiki。 被广泛应用于环境检测、结构健康监测等等。包括路由协议
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        }                // Check for infinite values        if (Double.isInfinite(coloringHighest) || Double.isInfinite(coloringLowest)) {          g.setColor(Color.WHITE);          g.fillRect(0, 0, width, height);          g.setColor(Color.BLACK);          String stringToDraw = "INFINITE VALUES EXIST";          g.drawString(stringToDraw, width/2 - g.getFontMetrics().stringWidth(stringToDraw)/2, height/2 + textHeight/2);          return;        }                // Check if values are constant        if (diff == 0) {          g.setColor(Color.WHITE);          g.fillRect(0, 0, width, height);          g.setColor(Color.BLACK);          NumberFormat formatter = DecimalFormat.getNumberInstance();          String stringToDraw = "CONSTANT VALUES (" + formatter.format(coloringHighest) + ")";          g.drawString(stringToDraw, width/2 - g.getFontMetrics().stringWidth(stringToDraw)/2, height/2 + textHeight/2);          return;        }        for (int i=0; i < width; i++) {          double paintValue = coloringLowest + (double) i / (double) width * diff;          g.setColor(              new Color(                  getColorOfSignalStrength(paintValue, coloringLowest, coloringHighest)));                    g.drawLine(i, 0, i, height);        }                if (dataTypeToVisualize == ChannelModel.TransmissionData.PROB_OF_RECEPTION) {          NumberFormat formatter = DecimalFormat.getPercentInstance();          g.setColor(Color.BLACK);          g.drawString(formatter.format(coloringLowest), 3, textHeight);          String stringToDraw = formatter.format(coloringHighest);          g.drawString(stringToDraw, width - g.getFontMetrics().stringWidth(stringToDraw) - 3, textHeight);        } else if (dataTypeToVisualize == ChannelModel.TransmissionData.SIGNAL_STRENGTH ||            dataTypeToVisualize == ChannelModel.TransmissionData.SIGNAL_STRENGTH_VAR ) {          NumberFormat formatter = DecimalFormat.getNumberInstance();          g.setColor(Color.BLACK);          g.drawString(formatter.format(coloringLowest) + "dBm", 3, textHeight);          String stringToDraw = formatter.format(coloringHighest) + "dBm";          g.drawString(stringToDraw, width - g.getFontMetrics().stringWidth(stringToDraw) - 3, textHeight);        } else if (dataTypeToVisualize == ChannelModel.TransmissionData.SNR ||            dataTypeToVisualize == ChannelModel.TransmissionData.SNR_VAR) {          NumberFormat formatter = DecimalFormat.getNumberInstance();          g.setColor(Color.BLACK);          g.drawString(formatter.format(coloringLowest) + "dB", 3, textHeight);          String stringToDraw = formatter.format(coloringHighest) + "dB";          g.drawString(stringToDraw, width - g.getFontMetrics().stringWidth(stringToDraw) - 3, textHeight);        } else if (dataTypeToVisualize == ChannelModel.TransmissionData.DELAY_SPREAD_RMS) {          NumberFormat formatter = DecimalFormat.getNumberInstance();          g.setColor(Color.BLACK);          g.drawString(formatter.format(coloringLowest) + "us", 3, textHeight);          String stringToDraw = formatter.format(coloringHighest) + "us";          g.drawString(stringToDraw, width - g.getFontMetrics().stringWidth(stringToDraw) - 3, textHeight);        }              }    };    coloringIntervalPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK));    Dimension colorPanelSize = new Dimension(200, 20);    coloringIntervalPanel.setPreferredSize(colorPanelSize);    coloringIntervalPanel.setMinimumSize(colorPanelSize);    coloringIntervalPanel.setMaximumSize(colorPanelSize);    coloringIntervalPanel.setAlignmentX(Component.LEFT_ALIGNMENT);    visualizeChannelPanel.add(coloringIntervalPanel);    // Choose channel output to visualize    visualizeChannelPanel.add(Box.createRigidArea(new Dimension(0,20)));    visualizeChannelPanel.add(new JLabel("Visualize radio output:"));    JRadioButton signalStrengthButton = new JRadioButton("Signal strength");    signalStrengthButton.setActionCommand("signalStrengthButton");    signalStrengthButton.setSelected(true);    signalStrengthButton.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        dataTypeToVisualize = ChannelModel.TransmissionData.SIGNAL_STRENGTH;      }    });    visualizeChannelPanel.add(signalStrengthButton);    JRadioButton signalStrengthVarButton = new JRadioButton("Signal strength variance");    signalStrengthVarButton.setActionCommand("signalStrengthVarButton");    signalStrengthVarButton.setSelected(false);    signalStrengthVarButton.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        dataTypeToVisualize = ChannelModel.TransmissionData.SIGNAL_STRENGTH_VAR;      }    });    visualizeChannelPanel.add(signalStrengthVarButton);       JRadioButton SNRButton = new JRadioButton("Signal to Noise ratio");    SNRButton.setActionCommand("SNRButton");    SNRButton.setSelected(false);    SNRButton.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        dataTypeToVisualize = ChannelModel.TransmissionData.SNR;      }    });    visualizeChannelPanel.add(SNRButton);      JRadioButton SNRVarButton = new JRadioButton("Signal to Noise variance");    SNRVarButton.setActionCommand("SNRVarButton");    SNRVarButton.setSelected(false);    SNRVarButton.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        dataTypeToVisualize = ChannelModel.TransmissionData.SNR_VAR;      }    });    visualizeChannelPanel.add(SNRVarButton);       JRadioButton probabilityButton = new JRadioButton("Probability of reception");    probabilityButton.setActionCommand("probabilityButton");    probabilityButton.setSelected(false);    probabilityButton.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        dataTypeToVisualize = ChannelModel.TransmissionData.PROB_OF_RECEPTION;      }    });    visualizeChannelPanel.add(probabilityButton);    JRadioButton rmsDelaySpreadButton = new JRadioButton("RMS delay spread");    rmsDelaySpreadButton.setActionCommand("rmsDelaySpreadButton");    rmsDelaySpreadButton.setSelected(false);    rmsDelaySpreadButton.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        dataTypeToVisualize = ChannelModel.TransmissionData.DELAY_SPREAD_RMS;      }    });    visualizeChannelPanel.add(rmsDelaySpreadButton);        visTypeSelectionGroup = new ButtonGroup();    visTypeSelectionGroup.add(signalStrengthButton);    visTypeSelectionGroup.add(signalStrengthVarButton);    visTypeSelectionGroup.add(SNRButton);    visTypeSelectionGroup.add(SNRVarButton);    visTypeSelectionGroup.add(probabilityButton);    visTypeSelectionGroup.add(rmsDelaySpreadButton);    visualizeChannelPanel.add(Box.createRigidArea(new Dimension(0,20)));    visualizeChannelPanel.add(new JLabel("Image resolution:"));        resolutionSlider = new JSlider(JSlider.HORIZONTAL, 30, 600, 200);    resolutionSlider.setMajorTickSpacing(100);    resolutionSlider.setPaintTicks(true);    resolutionSlider.setPaintLabels(true);    visualizeChannelPanel.add(resolutionSlider);    visualizeChannelPanel.add(Box.createRigidArea(new Dimension(0,20)));    JButton recalculateVisibleButton = new JButton("Recalculate visible area");    recalculateVisibleButton.setActionCommand("recalculate visible area");    recalculateVisibleButton.addActionListener(formulaHandler);    visualizeChannelPanel.add(recalculateVisibleButton);        // Create control panel    controlPanel = new JPanel();    controlPanel.setLayout(new BoxLayout(controlPanel, BoxLayout.Y_AXIS));    controlPanel.add(graphicsComponentsPanel);    controlPanel.add(new JSeparator());    controlPanel.add(Box.createRigidArea(new Dimension(0, 5)));    controlPanel.add(visualizeChannelPanel);    controlPanel.setPreferredSize(new Dimension(250,700));    controlPanel.setAlignmentX(Component.CENTER_ALIGNMENT);    scrollControlPanel = new JScrollPane(        controlPanel,        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,         JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);    scrollControlPanel.setPreferredSize(new Dimension(250,0));        // Add everything    this.setLayout(new BorderLayout());    this.add(BorderLayout.CENTER, canvas); // Add canvas    this.add(BorderLayout.EAST, scrollControlPanel);           // Load external images (antenna)    Toolkit toolkit = Toolkit.getDefaultToolkit();    URL imageURL = this.getClass().getClassLoader().getResource(antennaImageFilename);    antennaImage = toolkit.getImage(imageURL);        MediaTracker tracker = new MediaTracker(canvas);    tracker.addImage(antennaImage, 1);        try {      tracker.waitForAll();    } catch (InterruptedException ex) {      logger.fatal("Interrupted during image loading, aborting");      return;    }            // Try to select current plugin    try {      setSelected(true);    } catch (java.beans.PropertyVetoException e) {      // Could not select    }  }    /**   * Listens to mouse event on canvas   */  private MouseListener canvasMouseHandler = new MouseListener() {    public void mouseReleased(MouseEvent e) {    }    public void mouseExited(MouseEvent e) {    }    public void mouseClicked(MouseEvent e) {      if (inSelectMode) {        Vector<Radio> hitRadios = trackClickedRadio(e.getPoint());        if (hitRadios == null || hitRadios.size() == 0) {          if (e.getButton() != MouseEvent.BUTTON1) {            selectedRadio = null;            channelImage = null;            canvas.repaint();          }          return;        }        if (hitRadios.size() == 1 && hitRadios.firstElement() == selectedRadio)          return;                if (selectedRadio == null || !hitRadios.contains(selectedRadio)) {          selectedRadio = hitRadios.firstElement();        } else {          // Select next in list          selectedRadio = hitRadios.get(              (hitRadios.indexOf(selectedRadio)+1) % hitRadios.size()          );        }               channelImage = null;        canvas.repaint();      } else if (inTrackMode && selectedRadio != null) {        // Calculate real clicked position        double realClickedX = e.getX() / currentZoomX - currentPanX;         double realClickedY = e.getY() / currentZoomY - currentPanY;         Position radioPosition = currentRadioMedium.getRadioPosition(selectedRadio);        final double radioX = radioPosition.getXCoordinate();        final double radioY = radioPosition.getYCoordinate();                trackedComponents = currentChannelModel.getRaysOfTransmission(radioX, radioY, realClickedX, realClickedY);                canvas.repaint();      }          }    public void mouseEntered(MouseEvent e) {    }    public void mousePressed(MouseEvent e) {      lastHandledPosition = new Point(e.getX(), e.getY());      // Set zoom center (real world)      zoomCenterX = e.getX() / currentZoomX - currentPanX;       zoomCenterY = e.getY() / currentZoomY - currentPanY;       zoomCenterPoint = e.getPoint();    }  };    /**   * Listens to mouse movements when in pan mode   */  private MouseMotionListener canvasPanModeHandler = new MouseMotionListener() {    public void mouseMoved(MouseEvent e) {    }    public void mouseDragged(MouseEvent e) {      if (lastHandledPosition == null) {        lastHandledPosition = e.getPoint();        return;      }      // Pan relative to mouse movement and current zoom      // This way the mouse "lock" to the canvas      currentPanX += ((float) (e.getX() - lastHandledPosition.x)) / currentZoomX;      currentPanY += ((float) (e.getY() - lastHandledPosition.y)) / currentZoomY;      lastHandledPosition = e.getPoint();            canvas.repaint();    }  };    /**   * Listens to mouse movements when in zoom mode   */  private MouseMotionListener canvasZoomModeHandler = new MouseMotionListener() {    public void mouseMoved(MouseEvent e) {    }    public void mouseDragged(MouseEvent e) {      if (lastHandledPosition == null) {        lastHandledPosition = e.getPoint();        return;      }      // Zoom relative to mouse movement (keep XY-proportions)      currentZoomY += 0.005 * currentZoomY * ((double) (lastHandledPosition.y - e.getY()));      currentZoomY = Math.max(0.05, currentZoomY);       currentZoomY = Math.min(1500, currentZoomY);       currentZoomX = currentZoomY;      // We also need to update the current pan in order to zoom towards the mouse      currentPanX =  zoomCenterPoint.x/currentZoomX - zoomCenterX;      currentPanY =  zoomCenterPoint.y/currentZoomY - zoomCenterY;            lastHandledPosition = e.getPoint();      canvas.repaint();    }  };    /**   * Selects which mouse mode the canvas should be in (select/pan/zoom)   */  private ActionListener canvasModeHandler = new ActionListener() {    public void actionPerformed(ActionEvent e) {      if (e.getActionCommand().equals("set select mode")) {        // Select mode, no mouse motion listener needed        for (MouseMotionListener reggedListener: canvas.getMouseMotionListeners())          canvas.removeMouseMotionListener(reggedListener);        inTrackMode = false;        inSelectMode = true;      } else if (e.getActionCommand().equals("set pan mode")) {        // Remove all other mouse motion listeners        for (MouseMotionListener reggedListener: canvas.getMouseMotionListeners())          canvas.removeMouseMotionListener(reggedListener);        inSelectMode = false;        inTrackMode = false;   

⌨️ 快捷键说明

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