📄 sixxpanel.java.bak
字号:
import javax.swing.JPanel;
import javax.swing.JOptionPane;
import java.awt.*;
import java.util.ArrayList;
public class sixxPanel extends JPanel
{
private int n=6;
private final int hor=500,ver=500;
public sliderPanel sp;
public sixxPanel()
{
sp=new sliderPanel(this);
setBackground(Color.white);
setPreferredSize(new Dimension(hor,ver));
}
private double fang(double x,int i) //求x的i次方
{
if(i<1)return 1.0;
else return x*fang(x,i-1);
}
private double fun(double x) //求x的函数值
{
double result=0;
if(sp.L.isEmpty()!=true)
for(int i=n;i>=0;i--)
result+=sp.L.get(n-i)*fang(x,i);
return result;
}
public void drawBase(Graphics g)
{
g.drawLine(0,ver/2,hor,ver/2); //x轴
g.drawLine(hor-4,ver/2-4,hor,ver/2); //箭头
g.drawLine(hor-4,ver/2+4,hor,ver/2);
g.drawString("x",hor-10,ver/2+10);
//刻度
g.drawString("0",hor/2-10,ver/2+15); // 0 刻度
g.drawLine(hor/2-100,ver/2-4,hor/2-100,ver/2+4); // -1 刻度
g.drawString("-1",hor/2-100,ver/2+15);
g.drawLine(hor/2+100,ver/2-4,hor/2+100,ver/2+4); // 1 刻度
g.drawString("1",hor/2+100,ver/2+15);
g.drawLine(hor/2-200,ver/2-4,hor/2-200,ver/2+4); // -2 刻度
g.drawString("-2",hor/2-200,ver/2+15);
g.drawLine(hor/2+200,ver/2-4,hor/2+200,ver/2+4); // 2 刻度
g.drawString("2",hor/2+200,ver/2+15);
/////////////********************************************************////////////////
g.drawLine(hor/2,0,hor/2,ver); //y轴
g.drawLine(hor/2-4,4,hor/2,0); //箭头
g.drawLine(hor/2+4,4,hor/2,0);
g.drawString("y",hor/2+4,10);
//刻度
g.drawLine(hor/2-4,ver/2+100,hor/2+4,ver/2+100); // -1 刻度
g.drawString("-1",hor/2+4,ver/2+100);
g.drawLine(hor/2-4,ver/2-100,hor/2+4,ver/2-100); // 1 刻度
g.drawString("1",hor/2+4,ver/2-100);
g.drawLine(hor/2-4,ver/2+200,hor/2+4,ver/2+200); // -2 刻度
g.drawString("-2",hor/2+4,ver/2+200);
g.drawLine(hor/2-4,ver/2-200,hor/2+4,ver/2-200); // 2 刻度
g.drawString("2",hor/2+4,ver/2-200);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int h,v,xl=hor/2,xr=ver/2,yl,yr;//xleft,yleft xright,yright 用于记录坐标,便于画线段
double x,y1,y2;
g.setColor(Color.black);
drawBase(g);
yl=yr=ver/2+(int)fun(0);
for(h=1;h<=hor/2;h++) //从y轴开始向两边扩张画500个点
{
x=(double)h/100;
y1=fun(x); //画x正半轴的点
v=(int)(y1*100);
if(v>ver/2)v=ver/2;if(v<-(ver/2))v=-(ver/2);
g.drawLine(xr,yr,hor/2+h,ver/2-v);
xr=hor/2+h;yr=ver/2-v;
y2=fun(-x); //画x负半轴的点
v=(int)(y2*100);
if(v>ver/2)v=ver/2;if(v<-(ver/2))v=-(ver/2);
g.drawLine(xl,yl,hor/2-h,ver/2-v);
xl=hor/2-h;yl=ver/2-v;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -