📄 panel1.java
字号:
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 + -