📄 applet1.java
字号:
g.setColor(Color.black);
// fall through
case 8: // '\b'
if(token == 8)
g.setColor(Color.red);
drawtoken(g, 3, k1, y + 5 * heig);
if(token == 8)
g.setColor(Color.black);
// fall through
case 7: // '\007'
if(token == 7)
g.setColor(Color.red);
drawtoken(g, 1, k1, y + 4 * heig);
if(token == 7)
g.setColor(Color.black);
// fall through
case 6: // '\006'
if(token == 6)
g.setColor(Color.red);
drawtoken(g, 0, k1 + wid, y + 3 * heig);
if(token == 6)
g.setColor(Color.black);
// fall through
case 5: // '\005'
if(token == 5)
g.setColor(Color.red);
drawtoken(g, 4, k1 + wid, y + 2 * heig);
if(token == 5)
g.setColor(Color.black);
// fall through
case 4: // '\004'
if(token == 4)
g.setColor(Color.red);
drawtoken(g, 5, k1 - wid, y + 3 * heig);
if(token == 4)
g.setColor(Color.black);
// fall through
case 3: // '\003'
if(token == 3)
g.setColor(Color.red);
drawtoken(g, 3, k1 - wid, y + 2 * heig);
if(token == 3)
g.setColor(Color.black);
// fall through
case 2: // '\002'
if(token == 2)
g.setColor(Color.red);
drawtoken(g, 2, k1, y + heig);
if(token == 2)
g.setColor(Color.black);
// fall through
case 1: // '\001'
if(token == 1)
g.setColor(Color.red);
drawtoken(g, 1, k1, y);
if(token == 1)
g.setColor(Color.black);
// fall through
case 0: // '\0'
if(token == 0)
g.setColor(Color.red);
g.drawOval(((k1 - height) + width) - 2, y - height, (height * 3) / 2, (height * 3) / 2);
Color oldcol = g.getColor();
g.setColor(Color.green);
g.fillArc(((k1 - height) + width) - 1, (y - height) + 1, (height * 3) / 2 - 2, (height * 3) / 2 - 1, 0, 360);
g.setColor(oldcol);
g.drawString("E", k1, y);
if(token == 0)
g.setColor(Color.black);
break;
}
else
switch(token)
{
case 11: // '\013'
if(token == 11)
g.setColor(Color.red);
drawtoken1(g, 3, k1, y);
if(token == 11)
g.setColor(Color.black);
// fall through
case 10: // '\n'
if(token == 10)
g.setColor(Color.red);
drawtoken1(g, 6, k1, y + heig);
if(token == 10)
g.setColor(Color.black);
// fall through
case 9: // '\t'
if(token == 9)
g.setColor(Color.red);
drawtoken1(g, 5, k1 + wid, y + 2 * heig);
if(token == 9)
g.setColor(Color.black);
// fall through
case 8: // '\b'
if(token == 8)
g.setColor(Color.red);
drawtoken1(g, 4, k1 + wid, y + 3 * heig);
if(token == 8)
g.setColor(Color.black);
// fall through
case 7: // '\007'
if(token == 7)
g.setColor(Color.red);
drawtoken1(g, 2, k1 + 2 * wid, y + 4 * heig);
if(token == 7)
g.setColor(Color.black);
// fall through
case 6: // '\006'
if(token == 6)
g.setColor(Color.red);
drawtoken1(g, 1, k1 + 2 * wid, y + 5 * heig);
if(token == 6)
g.setColor(Color.black);
// fall through
case 5: // '\005'
if(token == 5)
g.setColor(Color.red);
drawtoken1(g, 3, k1, y + 4 * heig);
if(token == 5)
g.setColor(Color.black);
// fall through
case 4: // '\004'
if(token == 4)
g.setColor(Color.red);
drawtoken1(g, 2, k1, y + 5 * heig);
if(token == 4)
g.setColor(Color.black);
// fall through
case 3: // '\003'
if(token == 3)
g.setColor(Color.red);
drawtoken1(g, 1, k1, y + 6 * heig);
if(token == 3)
g.setColor(Color.black);
// fall through
case 2: // '\002'
if(token == 2)
g.setColor(Color.red);
drawtoken1(g, 2, k1 - wid, y + 2 * heig);
if(token == 2)
g.setColor(Color.black);
// fall through
case 1: // '\001'
if(token == 1)
g.setColor(Color.red);
drawtoken1(g, 1, k1 - wid, y + 3 * heig);
if(token == 1)
g.setColor(Color.black);
// fall through
case 0: // '\0'
if(token == 0)
g.setColor(Color.red);
drawtoken1(g, 0, k1 - wid, y + 4 * heig);
if(token == 0)
g.setColor(Color.black);
break;
}
}
void drawtoken1(Graphics g, int num, int k1, int y)
{
int k2 = k1 + width / 2;
String s0;
String s2;
String s3;
String s1 = s2 = s3 = s0 = null;
switch(num)
{
case 6: // '\006'
s0 = "T";
s1 = "T";
s2 = "*";
s3 = "F";
break;
case 5: // '\005'
s0 = "F";
s1 = "(";
s2 = "E";
s3 = ")";
break;
case 4: // '\004'
s0 = "E";
s1 = "E";
s2 = "+";
s3 = "T";
break;
case 3: // '\003'
s1 = "T";
s0 = "E";
break;
case 2: // '\002'
s1 = "F";
s0 = "T";
break;
case 1: // '\001'
s1 = "id";
s0 = "F";
break;
case 0: // '\0'
s0 = "id";
break;
}
g.drawOval(((k2 - height) + width / 2) - 2, y - height, (height * 3) / 2, (height * 3) / 2);
Color oldcol = g.getColor();
g.setColor(Color.green);
g.fillArc(((k2 - height) + width / 2) - 1, (y - height) + 1, (height * 3) / 2 - 2, (height * 3) / 2 - 1, 0, 360);
g.setColor(oldcol);
g.drawString(s0, k1, y);
if(num > 3)
{
mydrawnode(g, k2, y, k2 - wid, (y + heig) - height, s1);
mydrawnode(g, k2, y, k2, (y + heig) - height, s2);
mydrawnode(g, k2, y, k2 + wid, (y + heig) - height, s3);
} else
if(num > 0)
mydrawnode(g, k2, y, k2, (y + heig) - height, s1);
}
public void init()
{
f = new Font("Helvetica", 1, 16);
Dimension d = getSize();
int wsize = d.width;
int hsize = d.height;
setLayout(null);
setSize(800, 600);
rsp = new ScrollPane(0);
rsp.setBounds(0, 0, wsize - 340 - (wsize * 2) / 100, (hsize * 99) / 100);
add(rsp);
canvas1 = new Canvas();
canvas1.setSize(5000, 5000);
rsp.add(canvas1);
lsp = new ScrollPane(0);
lsp.setBounds(wsize - 340 - wsize / 100, 0, 208 + wsize / 100, (hsize * 98) / 100);
add(lsp);
ca1 = new lcanvas4_1(this);
ca2 = new rcanvas4_1(this);
lsp.add(ca1);
rsp.add(ca2);
sel = -1;
token = -1;
tokenp = 0;
pheight = d.height;
pwidth = d.width;
d = lsp.getSize();
lpheight = d.height;
lpwidth = d.width;
ca1.setSize(150, 450);
ca2.setSize(300, 450);
panel1 = new Panel();
panel1.setLayout(null);
panel1.setBounds(wsize - 120, (hsize * 4) / 100, 108, (hsize * 20) / 100);
add(panel1);
label1 = new Label("分析类型");
label1.setBounds(24, 0, 60, 24);
panel1.add(label1);
cbg = new CheckboxGroup();
ldev = new Checkbox("自顶向下", cbg, true);
ldev.setBounds(24, 24, 80, 24);
panel1.add(ldev);
rdev = new Checkbox("自底向上", cbg, false);
rdev.setBounds(24, 48, 80, 24);
panel1.add(rdev);
tf1 = new TextField("id*(id+id)");
tf1.setBounds(wsize - 120, (hsize * 28) / 100 + 30, 108, 24);
tf1.setEnabled(false);
add(tf1);
begin = new Button();
begin.setActionCommand("button");
begin.setLabel("开始");
begin.setBounds(wsize - 120, (hsize * 28) / 100 + 60, 108, 24);
add(begin);
begin.addActionListener(this);
next = new Button();
next.setActionCommand("button");
next.setLabel("下一步");
next.setBounds(wsize - 120, (hsize * 28) / 100 + 90, 108, 24);
next.setEnabled(false);
add(next);
next.addActionListener(this);
reset = new Button();
reset.setActionCommand("button");
reset.setLabel("重新开始");
reset.setBounds(wsize - 120, (hsize * 28) / 100 + 120, 108, 24);
reset.setEnabled(false);
add(reset);
reset.addActionListener(this);
my_description = new Button();
my_description.setActionCommand("button");
my_description.setLabel("使用说明");
my_description.setBounds(wsize - 120, (hsize * 28) / 100 + 200, 108, 24);
add(my_description);
my_description.addActionListener(this);
my_description.addActionListener(this);
label2 = new Label("固定输入");
label2.setBounds(wsize - 120, (hsize * 28) / 100, 108, 24);
add(label2);
label3 = new Label("");
label3.setBounds(wsize - 120, (hsize * 52) / 100, 108, 24);
add(label3);
lha = lsp.getHAdjustable();
lva = lsp.getVAdjustable();
lha.setUnitIncrement(10);
lva.setUnitIncrement(10);
rha = rsp.getHAdjustable();
rva = rsp.getVAdjustable();
rha.setUnitIncrement(10);
rva.setUnitIncrement(10);
}
public void onclickbegin()
{
ca2.state = 0;
reset.setEnabled(true);
next.setEnabled(true);
begin.setEnabled(false);
ldev.setEnabled(false);
rdev.setEnabled(false);
if(cbg.getSelectedCheckbox() == ldev)
nowldev = true;
else
nowldev = false;
sel = -1;
deal();
repaint();
}
public void onclickreset()
{
ca2.state = 0;
reset.setEnabled(false);
begin.setEnabled(true);
next.setEnabled(false);
ldev.setEnabled(true);
rdev.setEnabled(true);
token = sel = -1;
repaint();
}
public void rupdate()
{
wid = width * 5;
heig = height * 3;
Graphics tg = ca2.getGraphics();
tg.clearRect(0, 0, 500, 800);
drawtree(tg);
}
void deal()
{
if(sel == -1)
if(nowldev)
tokenp = 0;
else
tokenp = 1;
token++;
sel = bufl[tokenp][token];
if(token > 10)
next.setEnabled(false);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -