Question
this is an orion constellation java and it is giving a error on Constellations.java:17: error: cannot find symbol theApp.newStuff(); (HELP!!!!!!!!!!!!!!!!!!) import java.awt.*; import java.applet.*; import
this is an orion constellation java and it is giving a error on Constellations.java:17: error: cannot find symbol theApp.newStuff(); (HELP!!!!!!!!!!!!!!!!!!)
import java.awt.*;
import java.applet.*;
import java.lang.*;
import java.net.*;
import java.io.*;
class LoadThread implements Runnable {
private Constellations theApp;
public LoadThread(Constellations app) {
super();
theApp = app;
}
public void getStdLines() {
theApp.numlines = getLines(theApp.linedataset, theApp.lines, theApp.lines_math);
theApp.newStuff();
}
public void getAltLines() {
if (theApp.linedataset == theApp.altlinedataset) {
if (theApp.numlines == 0) {
theApp.uselines = false;
theApp.constcheck.disable();
}
theApp.altcheck.disable();
} else {
theApp.altnumlines = getLines(theApp.altlinedataset, theApp.altlines,
theApp.altlines_math);
if (theApp.numlines == 0) {
theApp.usealtlines = true;
if (theApp.altnumlines == 0 ) {
theApp.uselines = false;
theApp.constcheck.disable();
}
}
theApp.deliverEvent(new Event(this, theApp.NEW_STUFF, this));
}
}
public int getLines(int catalog, double lines[][], double lines_math[][]) {
int i = 0, j = 0;
String s;
try
{
if (catalog == 0)
// s = "http://www.astro.wisc.edu/~dolan/java/data/lines.dat";
s = "data/lines.dat";
else
// s = "http://www.astro.wisc.edu/~dolan/java/data/lines" +
s = "data/lines" +
String.valueOf(catalog) + ".dat";
System.out.println("Opening file " + s);
URL url = new URL(theApp.getCodeBase(), s);
URLConnection urlConnection = url.openConnection();
urlConnection.connect();
// if the file does not exist, the following will throw an exception:
InputStream is = urlConnection.getInputStream();
StreamTokenizer st = new StreamTokenizer(is);
while (st.nextToken() != st.TT_EOF) {
lines[j][i] = st.nval;
lines_math[j][2*i] = Math.sin(st.nval);
lines_math[j][2*i+1] = Math.cos(st.nval);
if ((++i) == 4) {
j++;
i = 0;
}
}
}
catch (Exception ex)
{
return 0;
}
System.out.println(String.valueOf(j) +
" constellation lines added");
return j;
}
public void getConsts() {
int i = 0, j = 0;
String s;
try
{
// s = "http://www.astro.wisc.edu/~dolan/java/data/averagebdys.dat";
s = "data/averagebdys.dat";
// System.out.println("Opening file " + s);
URL url = new URL(theApp.getCodeBase(), s);
URLConnection urlConnection = url.openConnection();
urlConnection.connect();
// if the file does not exist, the following will throw an exception:
InputStream is = urlConnection.getInputStream();
StreamTokenizer st = new StreamTokenizer(is);
while (st.nextToken() != st.TT_EOF) {
if (i == 0) {
theApp.constnames[j] = st.sval;
} else if (i == 1) {
theApp.constcoords[j][0] = st.nval*Math.PI/12.0;
theApp.constcoords_math[j][0] = Math.sin(theApp.constcoords[j][0]);
theApp.constcoords_math[j][1] = Math.cos(theApp.constcoords[j][0]);
} else {
theApp.constcoords[j][1] = st.nval*Math.PI/180.0;
theApp.constcoords_math[j][2] = Math.sin(theApp.constcoords[j][1]);
theApp.constcoords_math[j][3] = Math.cos(theApp.constcoords[j][1]);
j++;
i = -1;
}
i++;
}
}
catch (Exception ex)
{
theApp.numconst = 0;
theApp.usenames = false;
theApp.namecheck.disable();
return;
}
theApp.numconst = j;
System.out.println(String.valueOf(theApp.numconst) +
" constellations added");
theApp.deliverEvent(new Event(this, theApp.NEW_STUFF, this));
}
public void getData(int n) {
int i;
String url;
switch (theApp.dataset) {
case 0:
if (n == 0)
// url = "http://www.astro.wisc.edu/~dolan/java/data/bsc.dat";
url = "data/bsc.dat";
else
// url = "http://www.astro.wisc.edu/~dolan/java/data/bsc" +
url = "data/bsc" +
String.valueOf(n) + ".dat";
break;
case 1:
if (n == 0)
// url = "http://www.astro.wisc.edu/~dolan/java/data/YBS.dat";
url = "data/YBS.dat";
else
// url = "http://www.astro.wisc.edu/~dolan/java/data/YBS" +
url = "data/YBS" +
String.valueOf(n) + ".dat";
break;
default:
System.out.println("Invalid data set requested");
return;
}
i = getFile(url, theApp.stars, theApp.numstars);
if (i > 0) {
theApp.numstars += i;
System.out.println(String.valueOf(theApp.numstars) +
" stars in database");
theApp.deliverEvent(new Event(this, theApp.NEW_STARS, this));
}
}
public int getFile(String s, double a[][], int n) {
Double f;
int i, j;
try
{
// System.out.println("Accessing URL " + s);
URL url = new URL(theApp.getCodeBase(), s);
URLConnection urlConnection = url.openConnection();
urlConnection.connect();
// if the file does not exist, the following will throw an exception:
InputStream is = urlConnection.getInputStream();
StreamTokenizer st = new StreamTokenizer(is);
i = 0;
j = 0;
while (st.nextToken() != st.TT_EOF) {
a[n+j][i] = st.nval;
if (i != 2) {
theApp.stars_math[n+j][2*i] = Math.sin(st.nval);
theApp.stars_math[n+j][2*i+1] = Math.cos(st.nval);
}
if ((++i) == 3) {
j++;
i = 0;
}
}
}
catch (Exception ex)
{
return 0;
}
return j;
}
public void run() {
getData(1);
getData(2);
getConsts();
getData(3);
getStdLines();
getData(4);
getAltLines();
getData(5);
getData(6);
getData(7);
System.out.println("Done loading stars");
return;
}
}
public class Constellations extends Applet {
public final static int NEW_STUFF = 10000;
public final static int NEW_STARS = 10001;
// Variables used as parameters: must be predefined here!
public double ra = 0.0, dec = 0.0;
public double angle = 60.0;
public int speed = 5;
public int dataset = 0, linedataset = 0, altlinedataset = 0;
// Global variables
public double stars[][], stars_math[][];
public int numstars, usestars, starlists[], loadedlists = 0;
public int width, height;
public double lines[][], lines_math[][];
public int numlines;
public double altlines[][], altlines_math[][];
public int altnumlines;
public boolean uselines, usealtlines;
public String constnames[];
public double constcoords[][], constcoords_math[][];
public int numconst;
public boolean usenames;
// Double buffering Objects
public Image buf; // bitmap for double buffering
public Graphics gBuf; // gc to draw on bitmap
// GUI objects -- Should be private unless absolutely necessary
public Checkbox constcheck, namecheck, altcheck;
private LoadThread theLoadThread;
private SkyWidget skyWidget;
private Scrollbar scrollV, scrollH;
private TextField fov;
private Choice speedmenu;
private Font font;
private Button morebutton, lessbutton;
// Internal variables
private int expand;
private double dexpand;
public void init() {
Dimension d = size();
width = d.width;
height = d.height;
setBackground(Color.lightGray);
setFont(font = new Font("Helvetica", Font.PLAIN, 10));
setLayout(new BorderLayout());
getParams();
buf = createImage(width, height-100);
gBuf = buf.getGraphics();
stars = new double[10000][3];
stars_math = new double[10000][4];
starlists = new int[7];
numstars = 0;
usestars = 0;
lines = new double[1000][4];
lines_math = new double[1000][8];
numlines = 0;
altlines = new double[1000][4];
altlines_math = new double[1000][8];
altnumlines = 0;
uselines = true;
usealtlines = false;
constnames = new String[100];
constcoords = new double[100][2];
constcoords_math = new double[100][4];
numconst = 0;
usenames = true;
expand = 1;
dexpand = (double)expand;
Panel center = new Panel();
center.setLayout(new BorderLayout());
add("Center", center);
scrollV = new Scrollbar(Scrollbar.VERTICAL,
(int)(dexpand*(-dec)*180.0/Math.PI),
(int)(dexpand*angle*90.0/Math.PI),
-90 * expand, 90 * expand);
center.add("East", scrollV);
scrollH = new Scrollbar(Scrollbar.HORIZONTAL,
(int)(dexpand*(360.0-ra*180.0/Math.PI)),
(int)(dexpand*angle*90.0/Math.PI),
0 * expand, 360 * expand);
center.add("South", scrollH);
center.add("Center", skyWidget = new SkyWidget(this));
Panel bottom = new Panel();
bottom.setLayout(new GridLayout(0,1));
add("South", bottom);
Panel panel = new Panel();
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
bottom.add(panel);
panel.add(new Label("Field of view (degrees)", Label.RIGHT));
fov = new TextField(String.valueOf(angle*180.0/Math.PI), 6);
fov.setEditable(true);
panel.add(fov);
panel = new Panel();
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
bottom.add(panel);
panel.add(morebutton = new Button("More Stars"));
panel.add(lessbutton = new Button("Fewer Stars"));
panel = new Panel();
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
bottom.add(panel);
panel.add(constcheck = new Checkbox("Show constellations lines"));
constcheck.setState(uselines);
panel.add(namecheck = new Checkbox("Show constellation names"));
namecheck.setState(usenames);
panel = new Panel();
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
bottom.add(panel);
panel.add(altcheck = new Checkbox("Use new constellations"));
altcheck.setState(usealtlines);
}
public void start() {
if (numstars == 0) {
Thread theThread;
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
theLoadThread = new LoadThread(this);
theThread = new Thread(theLoadThread);
theThread.setPriority(Thread.MIN_PRIORITY);
theThread.start();
}
}
public void destroy() {
gBuf.dispose();
}
public synchronized boolean handleEvent(Event event) {
if (event.target == scrollV) {
dec = -(double)scrollV.getValue() * Math.PI / (180.0 * dexpand);
skyWidget.update(skyWidget.getGraphics());
return true;
} else if (event.target == scrollH) {
ra = (360.0-(double)scrollH.getValue()/dexpand) * Math.PI / 180.0;
skyWidget.update(skyWidget.getGraphics());
return true;
} else if (event.target == fov && event.id == Event.ACTION_EVENT) {
double a = new Double(fov.getText()).doubleValue();
if (a < 0.00001)
a = 0.00001;
if (a > 360.0)
a = 360.0;
/* Impose a limit of 120 degrees */
if (a > 120.0)
a = 120.0;
fov.setText(String.valueOf(a));
angle = a*Math.PI/180.0;
skyWidget.update(skyWidget.getGraphics());
return true;
} else if (event.target == constcheck && event.id == Event.ACTION_EVENT) {
uselines = constcheck.getState();
skyWidget.update(skyWidget.getGraphics());
return true;
} else if (event.target == namecheck && event.id == Event.ACTION_EVENT) {
usenames = namecheck.getState();
skyWidget.update(skyWidget.getGraphics());
return true;
} else if (event.target == altcheck && event.id == Event.ACTION_EVENT) {
usealtlines = altcheck.getState();
skyWidget.update(skyWidget.getGraphics());
return true;
} else if (event.target == morebutton && event.id == Event.ACTION_EVENT) {
if (speed < loadedlists) {
usestars = starlists[speed++];
skyWidget.update(skyWidget.getGraphics());
if (speed == loadedlists)
morebutton.setLabel("--");
lessbutton.setLabel("Fewer Stars");
}
return true;
} else if (event.target == lessbutton && event.id == Event.ACTION_EVENT) {
if (speed > 1) {
usestars = starlists[--speed - 1];
skyWidget.update(skyWidget.getGraphics());
if (speed == 1)
lessbutton.setLabel("--");
morebutton.setLabel("More Stars");
}
return true;
} else if (event.id == NEW_STARS) {
starlists[loadedlists++] = numstars;
if (loadedlists <= speed) {
usestars = numstars;
morebutton.setLabel("--");
if (speed > 1 && loadedlists > 1) {
lessbutton.setLabel("Fewer Stars");
} else {
lessbutton.setLabel("--");
}
} else {
morebutton.setLabel("More Stars");
}
skyWidget.update(skyWidget.getGraphics());
return true;
} else if (event.id == NEW_STUFF) {
skyWidget.update(skyWidget.getGraphics());
return true;
} else {
return super.handleEvent(event);
}
}
// Get parameters (for ra, dec, lat, long)
public void getParams() {
if (getParameter("ra") != null) {
ra = new Double(new String(getParameter("ra"))).doubleValue();
if (ra < 0.0)
ra = 0.0;
else if (ra > 24.0)
ra = 24.0;
ra = ra * Math.PI / 12.0;
}
if (getParameter("dec") != null) {
dec = new Double(new String(getParameter("dec"))).doubleValue();
if (dec < -90.0)
dec = -90.0;
else if (dec > 90.0)
dec = 90.0;
dec = dec * Math.PI / 180.0;
}
if (getParameter("angle") != null) {
angle = new Double(new String(getParameter("angle"))).doubleValue();
if (angle < 0.00001)
angle = 0.00001;
else if (angle > 360.0)
angle = 360.0;
angle = angle * Math.PI / 180.0;
}
if (getParameter("speed") != null) {
speed = new Integer(new String(getParameter("speed"))).intValue();
if (speed < 1)
speed = 1;
if (speed > 7)
speed = 7;
}
if (getParameter("data") != null) {
String s = getParameter("data");
if (s.compareTo("bsc") == 0) {
dataset = 0;
System.out.println("Using catalog \"" + s + "\"");
} else if (s.compareTo("YBS") == 0) {
dataset = 1;
System.out.println("Using catalog \"" + s + "\"");
} else {
System.out.println("Invalid data set \"" + s + "\" requested");
System.out.println("Using default catalog");
dataset = 0;
}
}
if (getParameter("lines") != null) {
int s = new Integer(new String(getParameter("lines"))).intValue();
if (s >= 0) {
linedataset = s;
}
}
if (getParameter("altlines") != null) {
int s = new Integer(new String(getParameter("altlines"))).intValue();
if (s >= 0) {
altlinedataset = s;
}
}
}
}
class SkyWidget extends Canvas {
private boolean doubleBuffer=true; // or false of course
private Dimension d;
private Constellations top;
private double brightnesses[] = {1.0, 0.9, 0.7, 1.0, 0.7, 0.4, 0.1};
private int xmid, ymid;
public SkyWidget(Constellations parent) {
top = parent;
setBackground(Color.black);
setForeground(Color.white);
}
private void drawCenteredString(Graphics g, String s, int x, int y) {
FontMetrics f = getFontMetrics(getFont());
g.drawString(s, x - f.stringWidth(s)/2, y + f.getHeight()/2);
}
protected void paintStars(Graphics g) {
int i, x, y;
double brightness, dist, ex, ey, ez;
double cr, sr, cd, sd, cr0, sr0, cd0, sd0;
int b;
dist = (double)Math.min(xmid,ymid)/Math.tan(top.angle/2.0);
sr = Math.sin(top.ra);
cr = Math.cos(top.ra);
sd = Math.sin(top.dec);
cd = Math.cos(top.dec);
for (i = top.usestars-1; i >= 0; i--) {
b = (int)top.stars[i][2];
b = b < 0 ? 0 : (b > 6 ? 6 : b);
g.setColor(Color.getHSBColor((float)0.0, (float)0.0,
(float)brightnesses[b]));
/* Projected view */
/*
ex = -cos(top.stars[i][1]) * (sin(top.ra)*cos(top.stars[i][0]) -
cos(top.ra)*sin(top.stars[i][0]));
ey = -cos(top.stars[i][1])*sin(top.dec) *
(cos(top.ra)*cos(top.stars[i][0]) +
sin(top.ra)*sin(top.stars[i][0]) +
cos(top.stars[i][1])*cos(top.dec);
ez = cos(top.stars[i][1])*cos(top.dec) *
(cos(top.ra)*cos(top.stars[i][0]) +
sin(top.ra)*sin(top.stars[i][0]) +
sin(top.stars[i][1])*sin(top.dec);
*/
sr0 = top.stars_math[i][0];
cr0 = top.stars_math[i][1];
sd0 = top.stars_math[i][2];
cd0 = top.stars_math[i][3];
ez = cd*cd0*(cr*cr0 + sr*sr0) + sd*sd0;
if (ez > 0.1) {
ey = -sd*cd0*(cr*cr0 + sr*sr0) + cd*sd0;
ex = -cd0*(sr*cr0 - cr*sr0);
x = xmid + (int)(-dist * ex/ez);
y = ymid + (int)(-dist * ey/ez);
switch (b) {
case 0:
g.drawLine(x-1,y,x+1,y);
g.drawLine(x,y-1,x,y+1);
break;
case 1:
case 2:
g.drawLine(x,y,x+1,y);
g.drawLine(x,y-1,x+1,y-1);
break;
default:
g.drawLine(x,y,x,y);
break;
}
}
}
}
protected void paintNames(Graphics g) {
int i, x, y;
double dist, ex, ey, ez;
double cr, sr, cd, sd, cr0, sr0, cd0, sd0;
dist = (double)Math.min(xmid,ymid)/Math.tan(top.angle/2.0);
g.setColor(Color.red);
sr = Math.sin(top.ra);
cr = Math.cos(top.ra);
sd = Math.sin(top.dec);
cd = Math.cos(top.dec);
for (i = top.numconst-1; i >= 0; i--) {
sr0 = top.constcoords_math[i][0];
cr0 = top.constcoords_math[i][1];
sd0 = top.constcoords_math[i][2];
cd0 = top.constcoords_math[i][3];
ez = cd*cd0*(cr*cr0 + sr*sr0) + sd*sd0;
if (ez > 0.1) {
ey = -sd*cd0*(cr*cr0 + sr*sr0) + cd*sd0;
ex = -cd0*(sr*cr0 - cr*sr0);
x = xmid + (int)(-dist * ex/ez);
y = ymid + (int)(-dist * ey/ez);
drawCenteredString(g, top.constnames[i], x, y);
}
}
}
protected void paintLines(Graphics g) {
int i, x1, x2, y1, y2;
double dist, ex1, ex2, ey1, ey2, ez1, ez2;
double cr, sr, cd, sd, cr1, sr1, cd1, sd1, cr2, sr2, cd2, sd2;
dist = (double)Math.min(xmid,ymid)/Math.tan(top.angle/2.0);
g.setColor(Color.blue);
sr = Math.sin(top.ra);
cr = Math.cos(top.ra);
sd = Math.sin(top.dec);
cd = Math.cos(top.dec);
for (i = top.numlines-1; i >= 0; i--) {
sr1 = top.lines_math[i][0];
cr1 = top.lines_math[i][1];
sd1 = top.lines_math[i][2];
cd1 = top.lines_math[i][3];
sr2 = top.lines_math[i][4];
cr2 = top.lines_math[i][5];
sd2 = top.lines_math[i][6];
cd2 = top.lines_math[i][7];
ez1 = cd*cd1*(cr*cr1 + sr*sr1) + sd*sd1;
ez2 = cd*cd2*(cr*cr2 + sr*sr2) + sd*sd2;
if (ez1 > 0.1 && ez2 > 0.1) {
ey1 = -sd*cd1*(cr*cr1 + sr*sr1) + cd*sd1;
ey2 = -sd*cd2*(cr*cr2 + sr*sr2) + cd*sd2;
ex1 = -cd1*(sr*cr1 - cr*sr1);
ex2 = -cd2*(sr*cr2 - cr*sr2);
x1 = xmid + (int)(-dist * ex1/ez1);
x2 = xmid + (int)(-dist * ex2/ez2);
y1 = ymid + (int)(-dist * ey1/ez1);
y2 = ymid + (int)(-dist * ey2/ez2);
g.drawLine(x1,y1,x2,y2);
}
}
}
protected void paintAltLines(Graphics g) {
int i, x1, x2, y1, y2;
double dist, ex1, ex2, ey1, ey2, ez1, ez2;
double cr, sr, cd, sd, cr1, sr1, cd1, sd1, cr2, sr2, cd2, sd2;
dist = (double)Math.min(xmid,ymid)/Math.tan(top.angle/2.0);
g.setColor(Color.blue);
sr = Math.sin(top.ra);
cr = Math.cos(top.ra);
sd = Math.sin(top.dec);
cd = Math.cos(top.dec);
for (i = top.altnumlines-1; i >= 0; i--) {
sr1 = top.altlines_math[i][0];
cr1 = top.altlines_math[i][1];
sd1 = top.altlines_math[i][2];
cd1 = top.altlines_math[i][3];
sr2 = top.altlines_math[i][4];
cr2 = top.altlines_math[i][5];
sd2 = top.altlines_math[i][6];
cd2 = top.altlines_math[i][7];
ez1 = cd*cd1*(cr*cr1 + sr*sr1) + sd*sd1;
ez2 = cd*cd2*(cr*cr2 + sr*sr2) + sd*sd2;
if (ez1 > 0.1 && ez2 > 0.1) {
ey1 = -sd*cd1*(cr*cr1 + sr*sr1) + cd*sd1;
ey2 = -sd*cd2*(cr*cr2 + sr*sr2) + cd*sd2;
ex1 = -cd1*(sr*cr1 - cr*sr1);
ex2 = -cd2*(sr*cr2 - cr*sr2);
x1 = xmid + (int)(-dist * ex1/ez1);
x2 = xmid + (int)(-dist * ex2/ez2);
y1 = ymid + (int)(-dist * ey1/ez1);
y2 = ymid + (int)(-dist * ey2/ez2);
g.drawLine(x1,y1,x2,y2);
}
}
}
protected void paintSky(Graphics g) {
// pre-clear the bitmap or the applet
// remove this if you paint the entire area anyway
d = size();
xmid = d.width/2;
ymid = d.height/2;
g.setColor(Color.black);
g.fillRect(0, 0, d.width, d.height);
if (top.uselines)
if (top.usealtlines)
paintAltLines(g);
else
paintLines(g);
if (top.usenames)
paintNames(g);
paintStars(g);
}
public void paint(Graphics g) {
if (doubleBuffer) {
paintSky(top.gBuf);
g.drawImage(top.buf, 0, 0, this);
} else {
paintSky(g);
}
}
public void update(Graphics g) {
// override this because the default implementation always
// calls clearRect first, causing unwanted flicker
paint(g);
}
public boolean mouseDown(Event evt, int x, int y) {
Dimension d;
double ra, dec, dy, dx, r, rr;
double dist, ex, ey, ez;
double cr, sr, cd, sd;
int rah,ram,ras,decd,decm,decs,xmid,ymid;
String sign;
Graphics g = this.getGraphics();
d = size();
xmid = d.width/2;
ymid = d.height/2;
dist = (double)Math.min(xmid,ymid)/Math.tan(top.angle/2.0);
dx = -(double)(x-xmid);
dy = -(double)(y-ymid);
sr = Math.sin(top.ra);
cr = Math.cos(top.ra);
sd = Math.sin(top.dec);
cd = Math.cos(top.dec);
r = Math.sqrt(dx*dx + dy*dy + dist*dist);
ex = ( dx*cr - dy*sd*sr + dist*cd*sr)/r;
ey = ( dy*cd + dist*sd )/r;
ez = (-dx*sr - dy*cr*sd + dist*cd*cr)/r;
rr = Math.sqrt(ex*ex + ez*ez);
ra = Math.atan2(ex,ez)*12.0/Math.PI;
dec = Math.atan2(ey,rr)*180.0/Math.PI;
if (ra < 0.0)
ra += 24.0;
rah = (int)ra;
ra = (ra-(double)rah)*60.0;
ram = (int)ra;
ra = (ra-(double)ram)*60.0;
ras = (int)ra;
if (dec < 0.0) {
sign = "-";
dec = -dec;
} else {
sign = "+";
}
decd = (int)dec;
dec = (dec-(double)decd)*60.0;
decm = (int)dec;
dec = (dec-(double)decm)*60.0;
decs = (int)dec;
g.setColor(Color.green);
g.drawString("RA "+rah+":"+ram+" Dec "+sign+decd+":"+decm, x, y);
return true;
}
public boolean mouseUp(Event evt, int x, int y) {
Graphics g = this.getGraphics();
if (doubleBuffer) {
g.drawImage(top.buf, 0, 0, this);
} else {
paintSky(g);
}
return true;
}
public boolean mouseDrag(Event evt, int x, int y) {
mouseUp(evt,x,y);
mouseDown(evt,x,y);
return true;
}
}
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started