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

📄 componentmenu.java

📁 The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
	 */	private class MenuView extends JPanel implements MouseListener	{		MenuView()		{			addMouseListener(this);		}		/**		 * Method to repaint this MenuView.		 */		public void paint(Graphics g)		{			// clear the area			Dimension dim = getSize();			g.setColor(Color.WHITE);			g.fillRect(0, 0, dim.width, dim.height);			// draw black menu dividers			g.setColor(Color.BLACK);			for(int i=0; i<=menuHei; i++)			{				int y = (dim.height-1) - (dim.height-1) * i / menuHei;				g.drawLine(0, y, dim.width-1, y);			}			for(int i=0; i<=menuWid; i++)			{				int x = (dim.width-1) * i / menuWid;				g.drawLine(x, 0, x, dim.height-1);			}			// draw all of the menu entries			for (int i = 0; i < menuWid; i++)			{				for (int j = 0; j < menuHei; j++)				{					int lowX = (dim.width-1) * i / menuWid;					int lowY = (dim.height-1) - (dim.height-1) * (j+1) / menuHei;					int highX = (dim.width-1) * (i+1) / menuWid;					int highY = (dim.height-1) - (dim.height-1) * j / menuHei;					Object item = (menuArray[j] == null) ? null : menuArray[j][i];					Color borderColor = null;					if (item instanceof Xml.PrimitiveNode)					{						Xml.PrimitiveNode np = (Xml.PrimitiveNode)item;						int midY = (lowY + highY) / 2;						showString(g, "Node", lowX, highX, lowY, midY);						showString(g, np.name, lowX, highX, midY, highY);						borderColor = Color.BLUE;					} else if (item instanceof Xml.MenuNodeInst)					{						Xml.MenuNodeInst ni = (Xml.MenuNodeInst)item;						int midY = (lowY + highY) / 2;						showString(g, "Node", lowX, highX, lowY, midY);						showString(g, getNodeName(ni), lowX, highX, midY, highY);						borderColor = Color.BLUE;					} else if (item instanceof Xml.ArcProto)					{						Xml.ArcProto ap = (Xml.ArcProto)item;						int midY = (lowY + highY) / 2;						showString(g, "Arc", lowX, highX, lowY, midY);						showString(g, ap.name, lowX, highX, midY, highY);						borderColor = Color.RED;					} else if (item instanceof List)					{						List popupItems = (List)item;						for(Object o : popupItems)						{							if (o instanceof Xml.PrimitiveNode || o instanceof Xml.MenuNodeInst) borderColor = Color.BLUE; else								if (o instanceof Xml.ArcProto) borderColor = Color.RED;						}						showString(g, "POPUP", lowX, highX, lowY, highY);					} else if (item instanceof String)					{						String s = (String)item;						if (s.startsWith("LOADCELL "))						{							String cellName = s.substring(9);							int midY = (lowY + highY) / 2;							showString(g, "Cell", lowX, highX, lowY, midY);							showString(g, cellName, lowX, highX, midY, highY);							borderColor = Color.BLUE;						} else						{							showString(g, "\"" + (String)item + "\"", lowX, highX, lowY, highY);						}					}					if (borderColor != null)					{						g.setColor(borderColor);						g.drawLine(lowX+1, lowY-1, highX-1, lowY-1);						g.drawLine(highX-1, lowY-1, highX-1, highY+1);						g.drawLine(highX-1, highY+1, lowX+1, highY+1);						g.drawLine(lowX+1, highY+1, lowX+1, lowY-1);					}				}			}			// highlight the selected menu element			if (menuSelectedX >= 0 && menuSelectedY >= 0)			{				int lowX = (dim.width-1) * menuSelectedX / menuWid;				int lowY = (dim.height-1) - (dim.height-1) * (menuSelectedY+1) / menuHei;				int highX = (dim.width-1) * (menuSelectedX+1) / menuWid;				int highY = (dim.height-1) - (dim.height-1) * menuSelectedY / menuHei;				g.setColor(Color.GREEN);				g.drawLine(lowX, lowY, highX, lowY);				g.drawLine(highX, lowY, highX, highY);				g.drawLine(highX, highY, lowX, highY);				g.drawLine(lowX, highY, lowX, lowY);				g.drawLine(lowX+1, lowY+1, highX-1, lowY+1);				g.drawLine(highX-1, lowY+1, highX-1, highY-1);				g.drawLine(highX-1, highY-1, lowX+1, highY-1);				g.drawLine(lowX+1, highY-1, lowX+1, lowY+1);			}		}		private void showString(Graphics g, String msg, int lowX, int highX, int lowY, int highY)		{			g.setColor(Color.BLACK);			Font font = new Font(User.getDefaultFont(), Font.PLAIN, 9);			g.setFont(font);			FontRenderContext frc = new FontRenderContext(null, true, true);			for(;;)			{				GlyphVector gv = font.createGlyphVector(frc, msg);				LineMetrics lm = font.getLineMetrics(msg, frc);				double txtHeight = lm.getHeight();				Rectangle2D rasRect = gv.getLogicalBounds();				double txtWidth = rasRect.getWidth();				if (txtWidth <= highX-lowX)				{					Graphics2D g2 = (Graphics2D)g;					g2.drawGlyphVector(gv, (float)(lowX + (highX-lowX - txtWidth)/2),						(float)(lowY + highY + txtHeight)/2 - lm.getDescent());					break;				}				msg = msg.substring(0, msg.length()-1);			}		}		// the MouseListener events		public void mousePressed(MouseEvent evt)		{			Dimension dim = getSize();			int x = evt.getX() / (dim.width / menuWid);			int y = (menuHei-1) - (evt.getY() / (dim.height / menuHei));			if (x < 0 || x >= menuWid || y < 0 || y >= menuHei) return;			menuSelectedX = x;			menuSelectedY = y;			showSelected();			repaint();		}		public void mouseReleased(MouseEvent evt) {}		public void mouseClicked(MouseEvent evt) {}		public void mouseEntered(MouseEvent evt) {}		public void mouseExited(MouseEvent evt) {}	}	/** 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.	 */    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents    private void initComponents() {        java.awt.GridBagConstraints gridBagConstraints;        Top = new javax.swing.JPanel();        nodeListPane = new javax.swing.JScrollPane();        arcListPane = new javax.swing.JScrollPane();        menuSize = new javax.swing.JLabel();        specialListPane = new javax.swing.JScrollPane();        jLabel2 = new javax.swing.JLabel();        jLabel3 = new javax.swing.JLabel();        jLabel4 = new javax.swing.JLabel();        addButton = new javax.swing.JButton();        removeButton = new javax.swing.JButton();        lowerRight = new javax.swing.JPanel();        addRow = new javax.swing.JButton();        deleteRow = new javax.swing.JButton();        addColumn = new javax.swing.JButton();        deleteColumn = new javax.swing.JButton();        lowerLeft = new javax.swing.JPanel();        selectedMenuName = new javax.swing.JLabel();        popupListPane = new javax.swing.JScrollPane();        nodeAngleLabel = new javax.swing.JLabel();        nodeFunctionLabel = new javax.swing.JLabel();        nodeNameLabel = new javax.swing.JLabel();        nodeTextSizeLabel = new javax.swing.JLabel();        nodeTextSize = new javax.swing.JTextField();        nodeName = new javax.swing.JTextField();        nodeFunction = new javax.swing.JComboBox();        nodeAngle = new javax.swing.JTextField();        cellListPane = new javax.swing.JScrollPane();        jLabel1 = new javax.swing.JLabel();        libraryName = new javax.swing.JComboBox();        getContentPane().setLayout(new java.awt.BorderLayout(0, 10));        setTitle("Component Menu");        setName("");        addWindowListener(new java.awt.event.WindowAdapter() {            public void windowClosing(java.awt.event.WindowEvent evt) {                closeDialog(evt);            }        });        Top.setLayout(new java.awt.GridBagLayout());        nodeListPane.setPreferredSize(new java.awt.Dimension(200, 200));        nodeListPane.setRequestFocusEnabled(false);        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 2;        gridBagConstraints.gridy = 1;        gridBagConstraints.gridwidth = 2;        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;        gridBagConstraints.weightx = 0.5;        gridBagConstraints.weighty = 0.3;        gridBagConstraints.insets = new java.awt.Insets(1, 4, 4, 4);        Top.add(nodeListPane, gridBagConstraints);        arcListPane.setPreferredSize(new java.awt.Dimension(200, 150));        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 2;        gridBagConstraints.gridy = 3;        gridBagConstraints.gridwidth = 2;        gridBagConstraints.gridheight = 2;        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;        gridBagConstraints.weightx = 0.5;        gridBagConstraints.weighty = 0.3;        gridBagConstraints.insets = new java.awt.Insets(1, 4, 4, 4);        Top.add(arcListPane, gridBagConstraints);        menuSize.setText("Menu");        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 0;        gridBagConstraints.gridy = 0;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 1, 4);        Top.add(menuSize, gridBagConstraints);        specialListPane.setOpaque(false);        specialListPane.setPreferredSize(new java.awt.Dimension(200, 50));        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 2;        gridBagConstraints.gridy = 8;        gridBagConstraints.gridwidth = 2;        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;        gridBagConstraints.weightx = 0.5;        gridBagConstraints.weighty = 0.1;        gridBagConstraints.insets = new java.awt.Insets(1, 4, 4, 4);        Top.add(specialListPane, gridBagConstraints);        jLabel2.setText("Nodes:");        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 2;        gridBagConstraints.gridy = 0;        gridBagConstraints.gridwidth = 2;        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;        gridBagConstraints.insets = new java.awt.Insets(4, 40, 1, 4);        Top.add(jLabel2, gridBagConstraints);        jLabel3.setText("Arcs:");        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 2;        gridBagConstraints.gridy = 2;        gridBagConstraints.gridwidth = 2;        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;        gridBagConstraints.insets = new java.awt.Insets(4, 40, 1, 4);        Top.add(jLabel3, gridBagConstraints);        jLabel4.setText("Special:");        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 2;        gridBagConstraints.gridy = 7;        gridBagConstraints.gridwidth = 2;        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;        gridBagConstraints.insets = new java.awt.Insets(4, 40, 1, 4);        Top.add(jLabel4, gridBagConstraints);        addButton.setText("<< Add");        addButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                addButtonActionPerformed(evt);            }        });        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 1;        gridBagConstraints.gridy = 3;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        Top.add(addButton, gridBagConstraints);        removeButton.setText("Remove");        removeButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                removeButtonActionPerformed(evt);            }        });        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 1;        gridBagConstraints.gridy = 4;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        Top.add(removeButton, gridBagConstraints);        lowerRight.setLayout(new java.awt.GridBagLayout());        addRow.setText("Add Row Below Current");        addRow.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                addRowActionPerformed(evt);            }        });        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 0;        gridBagConstraints.gridy = 0;        gridBagConstraints.gridwidth = 2;        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        lowerRight.add(addRow, gridBagConstraints);        deleteRow.setText("Delete Row With Current");        deleteRow.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                deleteRowActionPerformed(evt);            }        });        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 0;        gridBagConstraints.gridy = 1;        gridBagConstraints.gridwidth = 2;        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);

⌨️ 快捷键说明

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