hallo!
folgende fehlermeldungen:
1) wenn ich dem applet nur "implements MouseListener" dazuschreibe:
Test002 is not abstract and does not override abstract method mouseReleased(java.awt.event.MouseEvent) in java.awt.event.MouseListener
public class Test002 extends java.applet.Applet implements MouseListener {
2) wenn ich applet + implements MouseListener + button.addMouseListener(this) direct unter der public class test002:
identifier expected bei der klammer vom (this)
3) applet + implements... + button.addMouseListener(this) in der init():
gleicher fehler wie bei (1)
noch eine frage: wie kann ich eine double auf 2 dezimalstellen runden??? mit Math.round(double*100)/100 kommt bei mir immer xxx.0
hier der code.. vielleicht hilfts was
PHP-Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Test002 extends java.applet.Applet {
int fensterx = 10;
int fenstery = 10;
int fensterw = 300;
int fensterh = 300;
int downx, downy;
int d = 10;
int i,object;
boolean hit;
Label text;
int[][] coords = new int[3][3];
int[] v1 = new int[2];
int[] v2 = new int[2];
public void init() {
setLayout(null);
setBackground(Color.white);
Button test = new Button("test!");
test.setBounds(fensterx+fensterw+20,10,50,20);
add(test);
text = new Label();
text.setBounds(fensterx+fensterw+20,35,98,20);
add(text);
coords[0][0] = 210;
coords[0][1] = 130;
coords[0][2] = 100;
coords[1][0] = 80;
coords[1][1] = 110;
coords[1][2] = 50;
coords[2][0] = 180;
coords[2][1] = 270;
coords[2][2] = -100;
}
public boolean mouseDown(Event e, int x, int y) {
downx = x;
downy = y;
hit = false;
for(i=0;i<coords.length;i++) {
int mx = coords[i][0];
int my = coords[i][1];
if(downx < mx+d/2 && downx > mx-d/2 && downy < my+d/2 && downy > my-d/2) {
object = i;
hit = true;
}
}
return true;
}
public boolean mouseDrag(Event e,int x ,int y) {
if(x <= fensterx)
x = fensterx;
if(x >= fensterx+fensterw)
x = fensterx+fensterw;
if(y <= fenstery)
y = fenstery;
if(y >= fenstery+fensterh)
y = fenstery+fensterh;
if(hit == true) {
coords[object][0] = x;
coords[object][1] = y;
}
downx = x;
downy = y;
repaint(fensterx,fenstery,fensterw,fensterh);
return true;
}
public void paint(Graphics g) {
g.setColor(Color.blue);
int vx = coords[0][0];
int vy = coords[0][1];
vektor(0,1,g);
vektor(0,2,g);
int newx = v1[0]+v2[0]-vx; // ausgangspunkt v1 + vektor vx_v2 (spitze minus schaft)
int newy = v1[1]+v2[1]-vy; // ausgangspunkt v1 + vektor vx_v2 (spitze minus schaft)
g.setColor(Color.green);
g.drawLine(vx,vy,newx,newy);
// Feldstärke der Resultierenden
double feld;
feld = Math.sqrt((vx-newx)*(vx-newx)+(vy-newy)*(vy-newy));
text.setText("Feldstärke: " + Double.toString(feld));
for(i=0;i<coords.length;i++) {
int x = coords[i][0];
int y = coords[i][1];
int z = coords[i][2];
ladung(x,y,z,i,g);
}
g.setColor(Color.black);
g.drawRect(fensterx,fenstery,fensterw,fensterh); // zeichenfenster
}
public void ladung(int mx, int my, int z, int lad, Graphics g) {
if(i == 0)
g.setColor(Color.black);
else if(z > 0)
g.setColor(Color.red);
else if(z < 0)
g.setColor(Color.blue);
g.drawOval(mx-(d/2),my-(d/2),d,d);
g.drawLine(mx-(d/2),my,mx+(d/2),my);
g.drawLine(mx,my-(d/2),mx,my+(d/2));
}
public void vektor(int lad1, int lad2, Graphics g) {
int x1 = coords[lad1][0];
int y1 = coords[lad1][1];
int q1 = coords[lad1][2];
int x2 = coords[lad2][0];
int y2 = coords[lad2][1];
int q2 = coords[lad2][2];
double r,betrag,epsilon_null;
int faktor = 18000;
epsilon_null = 8.854; // original: 8.854*Math.pow(10,-12);
r = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
betrag = ((q1*q2)/(r*r))*(1/(4*Math.PI*epsilon_null))*faktor;
// vektor wird erstellt (vx|vy) - spitze minus schaft
int vx = x1 - x2;
int vy = y1 - y2;
// einheitsvektor a' = a * (1 / |a|)
double evx = vx*(1/r);
double evy = vy*(1/r);
// vektorcoords für erzeugende werden gespeichert
if(lad2==1) {
v1[0]=(int)(x1+evx*betrag);
v1[1]=(int)(y1+evy*betrag);
}
if(lad2==2) {
v2[0]=(int)(x1+evx*betrag);
v2[1]=(int)(y1+evy*betrag);
}
Color color = new Color(220,220,220);
g.setColor(color);
g.drawLine(x1,y1,(int)(x1+evx*betrag),(int)(y1+evy*betrag));
}
}