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

📄 panel1.java

📁 基于web的数学公式编辑器
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
				setFontSize(fontsize2 - reducesize);
				g2.setFont(f);
				printChildNode2(temp.getLastChild(), g2);
				issub = 0;
				setissmallsize();
				if (issmallsize == 0)
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
			}
			else if (nodename == "msubsup" && issubsup == 0)
			{
				if (issmallsize == 1)
				{
					setFontSize(fontsize2 - reducesize);
					g2.setFont(f);
				}
				else
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
				printChildNode2(temp.getFirstChild(), g2);
				issubsup = 1;
				issmallsize = 1;
				setFontSize(fontsize2 - reducesize);
				g2.setFont(f);
				printChildNode2(temp.getFirstChild().getNextSibling(), g2);
				printChildNode2(temp.getLastChild(), g2);
				issubsup = 0;
				setissmallsize();
				if (issmallsize == 0)
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
			}
			else if (nodename == "mintsubsup" && issubsup == 0)
			{
				if (issmallsize == 1)
				{
					setFontSize(fontsize2 - reducesize);
					g2.setFont(f);
				}
				else
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
				printChildNode2(temp.getFirstChild(), g2);
				issubsup = 1;
				issmallsize = 1;
				setFontSize(fontsize2 - reducesize);
				g2.setFont(f);
				printChildNode2(temp.getFirstChild().getNextSibling(), g2);
				printChildNode2(temp.getLastChild(), g2);
				issubsup = 0;
				setissmallsize();
				if (issmallsize == 0)
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
			}
			else if (nodename == "mroot" && isroot == 0)
			{
				if (issmallsize == 1)
				{
					setFontSize(fontsize2 - reducesize);
					g2.setFont(f);
				}
				else
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
				printChildNode2(temp.getFirstChild(), g2);
				isroot = 1;
				issmallsize = 1;
				setFontSize(fontsize2 - reducesize);
				g2.setFont(f);
				printChildNode2(temp.getLastChild(), g2);
				isroot = 0;
				setissmallsize();
				if (issmallsize == 0)
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
			}
			else if (nodename == "mover" && isover == 0)
			{
				if (issmallsize == 1)
				{
					setFontSize(fontsize2 - reducesize);
					g2.setFont(f);
				}
				else
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
				printChildNode2(temp.getFirstChild(), g2);
				isover = 1;
				issmallsize = 1;
				setFontSize(fontsize2 - reducesize);
				g2.setFont(f);
				printChildNode2(temp.getLastChild(), g2);
				isover = 0;
				setissmallsize();
				if (issmallsize == 0)
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
			}
			else if (nodename == "munder" && isunder == 0)
			{
				if (issmallsize == 1)
				{
					setFontSize(fontsize2 - reducesize);
					g2.setFont(f);
				}
				else
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
				printChildNode2(temp.getFirstChild(), g2);
				isunder = 1;
				issmallsize = 1;
				setFontSize(fontsize2 - reducesize);
				g2.setFont(f);
				printChildNode2(temp.getLastChild(), g2);
				isunder = 0;
				setissmallsize();
				if (issmallsize == 0)
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
			}
			else if (nodename == "munderover" && isunderover == 0)
			{
				if (issmallsize == 1)
				{
					setFontSize(fontsize2 - reducesize);
					g2.setFont(f);
				}
				else
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
				printChildNode2(temp.getFirstChild(), g2);
				isunderover = 1;
				issmallsize = 1;
				setFontSize(fontsize2 - reducesize);
				g2.setFont(f);
				printChildNode2(temp.getFirstChild().getNextSibling(), g2);
				printChildNode2(temp.getLastChild(), g2);
				isunderover = 0;
				setissmallsize();
				if (issmallsize == 0)
				{
					setFontSize(fontsize2);
					g2.setFont(f);
				}
			}
			else if (nodename == "mo")
			{
				Node childnode = temp.getFirstChild();
				int type = childnode.getNodeType();
				if (type == Node.TEXT_NODE)
				{
					if (childnode.getNodeValue().equals("{") || childnode.getNodeValue().equals("}") || childnode.getNodeValue().equals("(")
							|| childnode.getNodeValue().equals(")") || childnode.getNodeValue().equals("|") || childnode.getNodeValue().equals("[")
							|| childnode.getNodeValue().equals("]"))
					{
						drawframe(temp, g2, temp.getFirstChild().getNodeValue());
					}
					else
					{
						int x1 = 0, x2 = 0, y1 = 0, y2 = 0;
						String sx, sy;
						sx = ((Element) childnode.getParentNode()).getAttribute("x1");
						sy = ((Element) childnode.getParentNode()).getAttribute("y1");
						x1 = Integer.parseInt(sx);
						y1 = Integer.parseInt(sy);
						setbound(childnode.getNodeValue());
						g2.drawString(childnode.getNodeValue(), x1, y1 + (int) (stringy));
					}
				}
				else if (type == Node.ENTITY_REFERENCE_NODE)
				{
					int x1 = 0, x2 = 0, y1 = 0, y2 = 0;
					String sx, sy;
					sx = ((Element) childnode.getParentNode()).getAttribute("x1");
					sy = ((Element) childnode.getParentNode()).getAttribute("y1");
					x1 = Integer.parseInt(sx);
					y1 = Integer.parseInt(sy);
					String reference;
					Node aa = childnode;
					reference = this.getsymbolbyname(aa.getNodeName());
					setbound(reference);
					g2.drawString(reference, x1, y1 + (int) (stringy));
				}
			}
			else
			{ // 显示mrow,mn,mi,和部分mo节点、文字结点、实体参考结点
				NodeList nodes = temp.getChildNodes();
				for (int i = 0; i < nodes.getLength(); i++)
				{
					int type = nodes.item(i).getNodeType();
					if (type == Node.ELEMENT_NODE)
					{ // 结点是元素
						printChildNode2(nodes.item(i), g2);
					}
					else if (type == Node.TEXT_NODE)
					{
						int x1 = 0, x2 = 0, y1 = 0, y2 = 0;
						String sx, sy;
						sx = ((Element) nodes.item(i).getParentNode()).getAttribute("x1");
						sy = ((Element) nodes.item(i).getParentNode()).getAttribute("y1");
						x1 = Integer.parseInt(sx);
						y1 = Integer.parseInt(sy);
						setbound(nodes.item(i).getNodeValue());
						g2.drawString(nodes.item(i).getNodeValue(), x1, y1 + (int) (stringy));
					}
					else if (type == Node.ENTITY_REFERENCE_NODE)
					{
						int x1 = 0, x2 = 0, y1 = 0, y2 = 0;
						String sx, sy;
						sx = ((Element) nodes.item(i).getParentNode()).getAttribute("x1");
						sy = ((Element) nodes.item(i).getParentNode()).getAttribute("y1");
						x1 = Integer.parseInt(sx);
						y1 = Integer.parseInt(sy);
						String reference;
						Node aa = nodes.item(i);
						reference = this.getsymbolbyname(aa.getNodeName());
						setbound(reference);
						g2.drawString(reference, x1, y1 + (int) (stringy));
					}
				}
			}
			// 显示temp节点的孩子完毕,开始显示temp的额外图形
			String name = temp.getNodeName();
			Point point1 = new Point();
			Point point2 = new Point();
			int x, y;
			String asx, asy;
			if (temp.getNodeName() == "mfrac")
			{
				asx = ((Element) temp).getAttribute("x1");
				asy = ((Element) temp.getLastChild()).getAttribute("y1");
			}
			else if (temp.getNodeName() == "mroot")
			{
				asx = ((Element) temp.getFirstChild()).getAttribute("x1");
				asy = ((Element) temp.getFirstChild()).getAttribute("y1");
			}
			else
			{
				asx = ((Element) temp).getAttribute("x1");
				asy = ((Element) temp).getAttribute("y1");
			}
			x = Integer.parseInt(asx);
			y = Integer.parseInt(asy);
			point1.x = x;
			point1.y = y;
			if (temp.getNodeName() == "mfrac")
			{
				asx = ((Element) temp).getAttribute("x2");
				asy = ((Element) temp).getAttribute("y2");
			}
			else if (temp.getNodeName() == "mroot")
			{
				asx = ((Element) temp.getFirstChild()).getAttribute("x2");
				asy = ((Element) temp.getFirstChild()).getAttribute("y2");
			}
			else
			{
				asx = ((Element) temp).getAttribute("x2");
				asy = ((Element) temp).getAttribute("y2");
			}
			x = Integer.parseInt(asx);
			y = Integer.parseInt(asy);
			point2.x = x;
			point2.y = y;
			name = temp.getNodeName();
			if (name.equals("msqrt"))
			{
				Msqrt msqrt = new Msqrt();
				msqrt.draw(point1, point2, g2);
			}
			else if (name.equals("mfrac"))
			{ // point1,point2表示分母的坐标
				Mfrac mfrac = new Mfrac();
				mfrac.draw(point1, point2, g2);
			}
			else if (name.equals("mroot"))
			{
				Mroot mroot = new Mroot();
				mroot.draw(point1, point2, g2);
			}
		}
		else
		{ // 为没有子结点的结点画空白框
			int x1, y1, x2, y2;
			String sx1, sy1, sx2, sy2;
			sx1 = ((Element) temp).getAttribute("x1");
			sy1 = ((Element) temp).getAttribute("y1");
			sx2 = ((Element) temp).getAttribute("x2");
			sy2 = ((Element) temp).getAttribute("y2");
			x1 = Integer.parseInt(sx1);
			y1 = Integer.parseInt(sy1);
			x2 = Integer.parseInt(sx2);
			y2 = Integer.parseInt(sy2);
			g2.setColor(Color.BLUE);
			g2.drawRect(x1, y1 + 1, x2 - x1, y2 - y1);
			g2.setColor(Color.black);
		}
	}

	public void mousePressed(int x, int y)
	{

		x = x;
		y = y;
		searchNode(x, y);
		setrect();
		repaint();
	}

	public void mouseReleased(int x, int y)
	{

	}

	public void mouseDragged(int x, int y)
	{

	}

	private void searchNode(int x, int y)
	{

		search(x, y, root);
	}

	private void search(int x, int y, Node temp)
	{

		int x1, y1, x2, y2;
		String sx1, sy1, sx2, sy2;
		Node node;
		NodeList nodes = temp.getChildNodes();
		for (int i = 0; i < nodes.getLength(); i++)
		{
			if (nodes.item(i).getNodeType() == Node.ELEMENT_NODE)
			{
				sx1 = ((Element) nodes.item(i)).getAttribute("x1");
				sy1 = ((Element) nodes.item(i)).getAttribute("y1");
				sx2 = ((Element) nodes.item(i)).getAttribute("x2");
				sy2 = ((Element) nodes.item(i)).getAttribute("y2");
				x1 = Integer.parseInt(sx1);
				y1 = Integer.parseInt(sy1);
				x2 = Integer.parseInt(sx2);
				y2 = Integer.parseInt(sy2);
				if (x1 < x & x <= x2 & y1 < y & y <= y2)
				{
					isin = Boolean.TRUE;
					String nodename = nodes.item(i).getNodeName();
					if (nodename != "mtr")
					{
						if (nodename.equals("mrow") && nodes.item(i).hasChildNodes())
						{
							int x3 = (x1 + x2) / 2;
							if (x < x3)
							{
								insertnode = nodes.item(i).getFirstChild();
								isbefor = 1;
							}
							else
							{
								insertnode = nodes.item(i).getLastChild();
								isbefor = 0;
							}
						}
						else
						{
							insertnode = nodes.item(i);
							int x3 = (x1 + x2) / 2;
							if (x < x3)
							{
								isbefor = 1;
							}
							else
							{
								isbefor = 0;
							}
						}
					}
				}
				search(x, y, nodes.item(i));
			}
		}
	}

	void drawrect()
	{

		int x1, x2, y1, y2;
		x1 = (int) rect.getMinX();
		y1 = (int) rect.getMinY();
		x2 = (int) rect.getWidth();
		y2 = (int) rect.getHeight();
		Color color = g2.getColor();
		// g2.setColor(Color.blue);
		g2.drawLine

⌨️ 快捷键说明

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