该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我检查了很久了,结果是千奇百怪,我都要吐血了。
第一次写java,写的很毛糙,请求指点。
下面是我的代码,哪里不对头呢?
package chazhihanshu;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JPanel;
public class MyJPanelChaZhi extends JPanel implements KeyListener,MouseMotionListener,MouseListener,ActionListener
{
ButtonGroup chazhi = new ButtonGroup();
JButton Lagrange,Newton,Spline,start;
int butt;
int a;
int x[]=new int[10];//鼠标取点横
int y[]=new int[10];//鼠标取点纵
int x1[]=new int[250];
int y1[]=new int[250];//计算得到的纵坐标
int n=120;//下标上限
int n1;//取样点个数
int choise;
int h=5;
int isclick = 0;
public MyJPanelChaZhi (){//构造函数,初始化
choise=0;
n1=0;
Lagrange = new JButton("拉格朗日");
Newton = new JButton("牛顿插值");
Spline = new JButton("三次样条");
chazhi.add(Lagrange);
chazhi.add(Newton);
chazhi.add(Spline);
Lagrange.addActionListener(this);
Newton.addActionListener(this);
Spline.addActionListener(this);
Lagrange.setVisible(true);
Newton.setVisible(true);
Spline.setVisible(true);
add(Lagrange);
add(Newton);
add(Spline);
}
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.white);
g.fill3DRect(0, 50, 640, 420, true);
//绘制坐标
g.setColor(Color.black);
g.drawLine(10, 420, 10, 60);
g.drawLine(10, 420, 600, 420);
g.drawLine(5, 65, 10, 60);
g.drawLine(15, 65, 10, 60);
g.drawLine(595, 415, 600, 420);
g.drawLine(595, 425, 600, 420);
if(isclick==1)
{
for(int i=0;i
{
g.drawRect(x[i], y[i], 4, 4);
}
}
if(choise==1)//lagrange
{
for(int i=0;i
int t=0;
for(int j=0;j
int u=1;
for(int k=0;k
if(j!=k){
u=u*(x[0]+i*h-x[k])/(x[j]-x[k]);
}
}
u=u*y[j];
t=t+u;
}
y1[i]=t;
}
for(int i=0;i<100;i++){
g.drawLine(x[0]+h*i,y1[i],x[0]+h*i+h,y1[i+1]);
}
}
else if(choise==2){
}
else if(choise==3){
}
}
@Override
public void mouseClicked(MouseEvent e) {
x[n1]=e.getX()-5;
y[n1]=e.getY()-30;
System.out.print("x:"+x[n1]);
System.out.print("y:"+y[n1]);
n1++;
repaint();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==Lagrange){
choise=1;
repaint();
}
else if(e.getSource().equals(Newton)){
choise=2;
repaint();
}
else if(e.getSource().equals(Spline)){
choise=3;
repaint();
}
}
}