
информатик-аналитик

Профиль
Группа: Участник
Сообщений: 185
Регистрация: 2.6.2006
Где: Москва
Репутация: нет Всего: 1
|
Здравствуйте! У меня есть апплет, рисующий график функции. И есть HTML-страничка, созданная с помощью вкладок. Т.е. апплет появляется не везде на странице, а только на одной из вкладок. В Мозилле все работает на УРА! Но вот в Эксплорере - проблема. Когда из вкладки с апплетом перехожу на другую вкладку, рисунок, создаваемый апплетом не сразу исчезает. А если исчез - то насовсем. Т.е. когда я возвращаюсь на вкладку с апплетом - он не отображается. На всякий случай привожу код апплета: Код | import java.applet.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collection; import java.util.Vector; import java.util.List; import javax.swing.*;
import netscape.javascript.JSObject;
public class mitraGraphicClass extends Applet implements ActionListener{ TextArea txtArea; JSObject win; Float[] test; Integer[] id; ArrayList li = new ArrayList(); int MNOZH = 20; Float END = new Float(10.0); Float START = new Float(0.5); Float SHAG = new Float(0.1); /*int START = 5; int END = 40; int SHAG = 1;*/ Color bgColor; static Float c1; static Float c2; static Float r1; static Float r2; static Integer mitra; static Vector<Double> data; Double min = 0.0;
public void start() { Button b = new Button("Построить график функции"); b.addActionListener(this); add(b); c1 = new Float(2.92); c2 = new Float(-1.46); r1 = new Float(2.2); r2 = new Float(1.26); int m = 1; data = setFunction(START, END, SHAG, MNOZH, c1,c2,r1,r2,m); min = minValue(data); System.out.println(min); } public void actionPerformed(ActionEvent e){ win = JSObject.getWindow(this); test = (Float[]) win.call("test", null); c1 = test[0]; c2 = test[2]; r1 = test[1]; r2 = test[3]; mitra = (Integer) win.call("getMitra",null); data = setFunction(START, END, SHAG, MNOZH, c1,c2,r1,r2,mitra); min = minValue(data);
repaint(); } public void stop() { } public void destroy() { } public void paint(Graphics g) { //bgColor = new Color(192,192,192); // setBackground(bgColor); g.setColor(Color.black); //g.setFont(Font.SANS_SERIF); g.drawLine(50, 0, 50, 200); g.drawLine(50, 0, 55, 5); g.drawLine(50, 0, 45, 5); g.drawLine(0, 100, 300, 100); g.drawLine(300, 100, 295, 95); g.drawLine(300, 100, 295, 105); int setNullX = 50; int setNullY = 100; int startPoint = setNullX; // рисование осей for(int i=0;i<200;i=i+20) { g.drawLine(setNullX+i, setNullY+2, setNullX+i, setNullY-2); Float xval = new Float(i/MNOZH); String xvalue = toString().valueOf(xval).substring(0, 1); g.drawString(xvalue, setNullX+i, setNullY+14); } for(int j=20;j<100;j=j+20) { g.drawLine(setNullX+2, setNullY+j, setNullX-2, setNullY+j); g.drawLine(setNullX+2, setNullY-j, setNullX-2, setNullY-j); Float yval = new Float(j/MNOZH); String yvalue = toString().valueOf(-yval).substring(0, 2); g.drawString(yvalue, setNullX-14, setNullY+j); yvalue = toString().valueOf(yval).substring(0, 1); g.drawString(yvalue, setNullX-14, setNullY-j); } Float st = (START - SHAG)*MNOZH; Float fy = new Float(0.0); g.setColor(Color.red); int sh = 100; for (int fx=0; fx<=data.size()-2; fx++) { st = st + SHAG*MNOZH; int fx1 = (setNullX + st.intValue()); fy = new Float(data.get(fx)*MNOZH); int fy1 = (setNullY - fy.intValue()); int fx2 = (setNullX + st.intValue() + 1); fy = new Float(data.get(fx+1)*MNOZH); int fy2 = (setNullY - fy.intValue()); g.drawLine(fx1, fy1, fx2, fy2); } g.drawString("Максимальная глубина ямы:" + min, 10, 200+30); }
private Vector<Double> setFunction(Float left_max, Float count, Float shag, int m, Float c1, Float c2, Float r1, Float r2, int Mitra) { Vector<Double> function = new Vector<Double>(); Float mitraFloat = new Float(Mitra); System.out.println(mitraFloat); for (Float x=left_max; x<=count; x=x+shag) { Double f = (((((c1*c2*1.6*1.6))/(1.1*x))*(1.0+1.0/(mitraFloat + 1)*sign(c1,c2)*(Math.pow((r1+r2)/x,Mitra))))); function.add(f); } System.out.println(function); return function; } private int sign(Float c1, Float c2) { int x = 1; if ((c1 > 0) && (c2 > 0)) x = 1; else if ((c1 < 0) && (c2 < 0)) x = 1; else if ((c1 < 0) && (c2 > 0)) x = -1; else if ((c1 > 0) && (c2 < 0)) x = -1; return x; } private Double minValue(Vector<Double> data) { Double temp = null; int dataLength = data.size(); Double max = data.get(0); for (int i=1;i<dataLength;i++) { if (data.get(i) < max) { temp = data.get(i); data.set(i, max); max = temp; } } return max; } }
|
|