📄 panel1.java
字号:
package webmath;
import java.io.*;
import javax.xml.parsers.*;
import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import javax.swing.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import java.util.Vector;
public class Panel1 extends JPanel
{
Font f;
FontRenderContext context;
double stringwidth = 6d , stringheight = 15d , stringy = 8;
double bili = 2 / 3d;
Rectangle2D bounds;
String daima = new String("<math><mrow></mrow></math>");
String viewdaima = new String("");
String inputdaima;
String nameSpace = "m";
static int space;
float fontsize , fontsize2 , reducesize = 5f , referencesize = 5f;
int in = 14;
int screenoriginx = 10 , screenoriginy = 300;
int isbefor = 0;
int issmallsize = 0 , issup = 0 , issub = 0 , issubsup = 0 , isroot = 0 , isunder = 0 , isover = 0 , isunderover = 0;
int copyoriginx , copyoriginy;
Node root , copyroot;
Node insertnode;
Boolean isin = Boolean.FALSE;
Rectangle rect = new Rectangle();
Vector symbolvector = new Vector();
String symbol = "";
String symbol2 = "";
Graphics2D g2;
Document document;
SymbolFrame symbolframe = new SymbolFrame(this);
Matrixparameter matrix = new Matrixparameter(this);
int rowdistance = 10 , tierdistance = 10;
Webmath webmath;
public Panel1(Webmath webmath)
{
this.webmath = webmath;
symbolframe.setBounds(100, 100, 430, 420);
initdocument();
yuantoview();
insertnode = root.getFirstChild();
Mathobj mathobj = new Mathobj();
space = mathobj.space;
mathobj.screenoriginx = this.screenoriginx;
mathobj.screenoriginy = this.screenoriginy;
setrect();
MathmlString mathmlstring = new MathmlString(this);
f = new Font("Monospaced", Font.PLAIN, 15);
fontsize = f.getSize();
fontsize2 = f.getSize();
initsymbolvecter();
}
public void paint(Graphics g)
{
g2 = (Graphics2D) g;
super.paint(g);
g2.setFont(f);
/*
* viewdaima = getXML(root); g2.drawString(viewdaima, 0, 50); g2.drawString(insertnode.getNodeName() + " size=" + f.getSize(), 0, 20); for (int i = 0; i < 20; i++) {
* g2.drawLine(0, 200 + i * 10, 5, 200 + i * 10); }
*/
showscreen(g2);
drawcursor();
}
public void keydown(char s)
{
char achar[] = new char[2];
achar[0] = s;
String daima2 = new String(achar, 0, 1);
if (daima2.equals("0") | daima2.equals("1") | daima2.equals("2") | daima2.equals("3") | daima2.equals("4") | daima2.equals("5") | daima2.equals("6") | daima2.equals("7")
| daima2.equals("8") | daima2.equals("9"))
{
if (insertnode.getNodeName() == "mrow" || insertnode.getNodeName() == "mtd")
{
Element mn;
Node parentnode, textnode;
mn = (Element) document.createElement("mn");
parentnode = insertnode;
parentnode.appendChild(mn);
textnode = document.createTextNode(daima2);
mn.appendChild(textnode);
insertnode = mn;
}
else
{
Element mn;
Node parentnode, textnode, nextnode;
mn = (Element) document.createElement("mn");
parentnode = insertnode.getParentNode();
parentnode.appendChild(mn);
textnode = document.createTextNode(daima2);
mn.appendChild(textnode);
parentnode = insertnode.getParentNode();
if (isbefor == 0)
{
nextnode = insertnode.getNextSibling();
}
else
{
nextnode = insertnode;
}
if (nextnode != mn)
{
parentnode.insertBefore(mn, nextnode);
}
insertnode = mn;
}
}
else if (daima2.equals("+") | daima2.equals("-") | daima2.equals("*") | daima2.equals("/") | daima2.equals("=") | daima2.equals("{") | daima2.equals("}")
| daima2.equals("(") | daima2.equals(")") | daima2.equals("|") | daima2.equals("[") | daima2.equals("]"))
{
if (insertnode.getNodeName() == "mrow" || insertnode.getNodeName() == "mtd")
{
Element mn;
Node parentnode, textnode;
mn = (Element) document.createElement("mo");
parentnode = insertnode;
parentnode.appendChild(mn);
textnode = document.createTextNode(daima2);
mn.appendChild(textnode);
insertnode = mn;
}
else
{
Element mn;
Node parentnode, textnode, nextnode;
mn = (Element) document.createElement("mo");
parentnode = insertnode.getParentNode();
parentnode.appendChild(mn);
textnode = document.createTextNode(daima2);
mn.appendChild(textnode);
parentnode = insertnode.getParentNode();
if (isbefor == 0)
{
nextnode = insertnode.getNextSibling();
}
else
{
nextnode = insertnode;
}
if (nextnode != mn)
{
parentnode.insertBefore(mn, nextnode);
}
insertnode = mn;
}
}
else
{
if (insertnode.getNodeName() == "mrow" || insertnode.getNodeName() == "mtd")
{
Element mn;
Node parentnode, textnode;
mn = (Element) document.createElement("mi");
parentnode = insertnode;
parentnode.appendChild(mn);
textnode = document.createTextNode(daima2);
mn.appendChild(textnode);
insertnode = mn;
}
else
{
Element mn;
Node parentnode, textnode, nextnode;
mn = (Element) document.createElement("mi");
parentnode = insertnode.getParentNode();
parentnode.appendChild(mn);
textnode = document.createTextNode(daima2);
mn.appendChild(textnode);
parentnode = insertnode.getParentNode();
if (isbefor == 0)
{
nextnode = insertnode.getNextSibling();
}
else
{
nextnode = insertnode;
}
if (nextnode != mn)
{
parentnode.insertBefore(mn, nextnode);
}
insertnode = mn;
}
}
isbefor = 0;
requestFocus();
yuantoview();
setrect();
repaint();
}
public void buttondown(int n)
{
String daima2;
if (n == 0)
{
MathmlString mathstring = new MathmlString(this);
String out = mathstring.getmathmlcode();
System.out.println(out);
System.out.println(viewdaima);
}
else if (n == 1)
{ // 上标<msup><mrow></mrow><mrow></mrow></msup>
if (insertnode.getNodeName() == "mrow" || insertnode.getNodeName() == "mtd")
{
Node parentnode, nextnode;
Element mfrac = (Element) document.createElement("msup");
Element mrow = (Element) document.createElement("mrow");
Element mrow2 = (Element) document.createElement("mrow");
parentnode = insertnode;
parentnode.appendChild(mfrac);
mfrac.appendChild(mrow);
mfrac.appendChild(mrow2);
insertnode = mrow;
}
else
{
Node parentnode, nextnode;
Element mfrac = (Element) document.createElement("msup");
Element mrow = (Element) document.createElement("mrow");
Element mrow2 = (Element) document.createElement("mrow");
parentnode = document.createElement("cc");
parentnode = insertnode.getParentNode();
parentnode.appendChild(mfrac);
mfrac.appendChild(mrow);
mfrac.appendChild(mrow2);
if (isbefor == 0)
{
nextnode = insertnode.getNextSibling();
}
else
{
nextnode = insertnode;
}
if (nextnode != mfrac)
{
parentnode.insertBefore(mfrac, nextnode);
}
insertnode = mrow;
}
}
else if (n == 2)
{ // 下标<msub><mrow></mrow><mrow></mrow></msub>
if (insertnode.getNodeName() == "mrow" || insertnode.getNodeName() == "mtd")
{
Node parentnode, nextnode;
Element mfrac = (Element) document.createElement("msub");
Element mrow = (Element) document.createElement("mrow");
Element mrow2 = (Element) document.createElement("mrow");
parentnode = insertnode;
parentnode.appendChild(mfrac);
mfrac.appendChild(mrow);
mfrac.appendChild(mrow2);
insertnode = mrow;
}
else
{
Node parentnode, nextnode;
Element mfrac = (Element) document.createElement("msub");
Element mrow = (Element) document.createElement("mrow");
Element mrow2 = (Element) document.createElement("mrow");
parentnode = document.createElement("cc");
parentnode = insertnode.getParentNode();
parentnode.appendChild(mfrac);
mfrac.appendChild(mrow);
mfrac.appendChild(mrow2);
if (isbefor == 0)
{
nextnode = insertnode.getNextSibling();
}
else
{
nextnode = insertnode;
}
if (nextnode != mfrac)
{
parentnode.insertBefore(mfrac, nextnode);
}
insertnode = mrow;
}
}
else if (n == 3)
{ // 分数<mfrac><mrow>分子</mrow><mrow>分母</mrow></mfrac>
if (insertnode.getNodeName() == "mrow" || insertnode.getNodeName() == "mtd")
{
Node parentnode, nextnode;
Element mfrac = (Element) document.createElement("mfrac");
Element mrow = (Element) document.createElement("mrow");
Element mrow2 = (Element) document.createElement("mrow");
parentnode = insertnode;
parentnode.appendChild(mfrac);
mfrac.appendChild(mrow);
mfrac.appendChild(mrow2);
insertnode = mrow;
}
else
{
Node parentnode, nextnode;
Element mfrac = (Element) document.createElement("mfrac");
Element mrow = (Element) document.createElement("mrow");
Element mrow2 = (Element) document.createElement("mrow");
parentnode = document.createElement("cc");
parentnode = insertnode.getParentNode();
parentnode.appendChild(mfrac);
mfrac.appendChild(mrow);
mfrac.appendChild(mrow2);
if (isbefor == 0)
{
nextnode = insertnode.getNextSibling();
}
else
{
nextnode = insertnode;
}
if (nextnode != mfrac)
{
parentnode.insertBefore(mfrac, nextnode);
}
insertnode = mrow;
}
}
else if (n == 4)
{ // 平方根<msqrt><mrow></mrow></msqrt>
if (insertnode.getNodeName() == "mrow" || insertnode.getNodeName() == "mtd")
{
Node parentnode, nextnode;
Element msqrt = (Element) document.createElement("msqrt");
Element mrow = (Element) document.createElement("mrow");
parentnode = document.createElement("cc");
parentnode = insertnode;
parentnode.appendChild(msqrt);
msqrt.appendChild(mrow);
insertnode = mrow;
}
else
{
Node parentnode, nextnode;
Element msqrt = (Element) document.createElement("msqrt");
Element mrow = (Element) document.createElement("mrow");
parentnode = document.createElement("cc");
parentnode = insertnode.getParentNode();
parentnode.appendChild(msqrt);
msqrt.appendChild(mrow);
if (isbefor == 0)
{
nextnode = insertnode.getNextSibling();
}
else
{
nextnode = insertnode;
}
if (nextnode != msqrt)
{
parentnode.insertBefore(msqrt, nextnode);
}
insertnode = mrow;
}
}
else if (n == 5)
{ // 求根<mroot><mrow></mrow><mrow></mrow></mroot>
if (insertnode.getNodeName() == "mrow" || insertnode.getNodeName() == "mtd")
{
Node parentnode, nextnode;
Element mfrac = (Element) document.createElement("mroot");
Element mrow = (Element) document.createElement("mrow");
Element mrow2 = (Element) document.createElement("mrow");
parentnode = insertnode;
parentnode.appendChild(mfrac);
mfrac.appendChild(mrow);
mfrac.appendChild(mrow2);
insertnode = mrow;
}
else
{
Node parentnode, nextnode;
Element mfrac = (Element) document.createElement("mroot");
Element mrow = (Element) document.createElement("mrow");
Element mrow2 = (Element) document.createElement("mrow");
parentnode = document.createElement("cc");
parentnode = insertnode.getParentNode();
parentnode.appendChild(mfrac);
mfrac.appendChild(mrow);
mfrac.appendChild(mrow2);
if (isbefor == 0)
{
nextnode = insertnode.getNextSibling();
}
else
{
nextnode = insertnode;
}
if (nextnode != mfrac)
{
parentnode.insertBefore(mfrac, nextnode);
}
insertnode = mrow;
}
}
else if (n == 6)
{ // 积分
if (insertnode.getNodeName() == "mrow" || insertnode.getNodeName() == "mtd")
{
Node parentnode, nextnode;
Element mintsubsup = (Element) document.createElement("msubsup");
Element mrow = (Element) document.createElement("mrow");
Element mo = (Element) document.createElement("mo");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -