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

📄 glomocanvas.java

📁 无线网络仿真工具Glomosim2.03
💻 JAVA
字号:
import java.awt.*;import java.awt.event.*;import javax.swing.*;/* * The displaying canvas */public class GlomoCanvas extends JPanel                    implements MouseListener, MouseMotionListener {    private Color bgColor;    private GlomoMobileNode mobileNodes[];    private GlomoMobileNode selectedNode;    private boolean nodesSet = false;    private GlomoStatusPanel statusPanel;    private int width, height, selectedX, selectedY, scaledX, scaledY;    private int magnification = 4;    private GlomoRunThread runThread;    private GlomoRule columnRule, rowRule;    public GlomoCanvas(int w, int h, GlomoStatusPanel gsp, Color bc,                        GlomoRule columnRule, GlomoRule rowRule) {        super();        setPreferredSize(new Dimension(w, h));        width = w;        height = h;        bgColor = bc;        setOpaque(true);        setBackgroundColor(bgColor);        statusPanel = gsp;        this.columnRule = columnRule;        this.rowRule = rowRule;        addMouseListener(this);        addMouseMotionListener(this);    }    public void setMagnification(int m) {        magnification = m;        columnRule.setMagnification(m);        columnRule.repaint();        rowRule.setMagnification(m);        rowRule.repaint();     }    public void setBackgroundColor(Color c) {        bgColor = c;        setBackground(bgColor);    }    public Color getBackgroundColor(){        return(bgColor);    }    public void setNodes(GlomoMobileNode mn[], GlomoRunThread rt) {        mobileNodes = mn;        nodesSet = true;        runThread = rt;    }    public void paintComponent(Graphics g) {        // do the super class painting        super.paintComponent(g);        g.setXORMode(bgColor);        if (nodesSet == true) {            for (int i = 0; i < mobileNodes.length ; i++) {                mobileNodes[i].drawNode(g);                mobileNodes[i].drawHigherIdConnections(g);            }            // notify run thread now that canvas has finished repainting             runThread.stopInitialWaiting();        }    }    public void mousePressed(MouseEvent m) {        if (nodesSet == false) {            return;        }        selectedX = m.getX();        selectedY = m.getY();                int offset = 10;        for (int i=0; i < mobileNodes.length; i++) {            if (mobileNodes[i].inRegion(selectedX, selectedY, offset)) {                Graphics g = getGraphics();                g.setXORMode(bgColor);                selectedNode = mobileNodes[i];                scaledX = selectedX / magnification;                scaledY = selectedY / magnification;                selectedNode.drawPosition(g, selectedX, selectedY,                                           scaledX, scaledY);                g.dispose();                break;            }            else {                selectedNode = null;            }        }    }    public void mouseClicked(MouseEvent m) {}    public void mouseReleased(MouseEvent m) {        if ((nodesSet == false) || (selectedNode == null)) {            return;        }        else {            Graphics g = getGraphics();            g.setXORMode(bgColor);            scaledX = selectedX / magnification;            scaledY = selectedY / magnification;            selectedNode.erasePosition(g, selectedX, selectedY,                                        scaledX, scaledY);             g.dispose();        }    }    public void mouseMoved(MouseEvent m) {        scaledX = m.getX() / magnification;        scaledY = m.getY() / magnification;        statusPanel.setCoordinates("X: " + scaledX + " Y: " + scaledY);         // Display a node's coordination while mouse move above it.        if (nodesSet == false) {            return;        }        statusPanel.setHelpMessage("Move above the Node to get its coordinates");        selectedX = m.getX();        selectedY = m.getY();        int offset = 8;        boolean isAboveNode = false;        for (int i=0; i < mobileNodes.length; i++) {            if (mobileNodes[i].inRegion(selectedX, selectedY, offset)) {                String message = "Node" + i + " Position(" + mobileNodes[i].getNodeXCoord() +                                         "," + mobileNodes[i].getNodeYCoord() + ")";                statusPanel.setHelpMessage(message);                break;            }        }    }    public void mouseEntered(MouseEvent m) {}    public void mouseExited(MouseEvent m) {        statusPanel.setCoordinates("");        statusPanel.setHelpMessage("");    }    public void mouseDragged(MouseEvent m) {}    public int getMagnification() {        return magnification;    }}

⌨️ 快捷键说明

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