📄 componentmenu.java
字号:
*/ 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 + -