K
Kevin
(I asked in comp.lang.java.gui, but with little response after 3 days,
so I repost it here.
I am wondering what is the best way to this common GUI task:
Draw some rectangles, lines, pies, etc (say, in a JPanel). Make sure
these things are "pointable" and "pickable": when mouse is moved over
it, we can press mouse key to "pick up" it and drag it around, etc.
Previously in some early school homework projects, I just stored the
locations for each of them in an array. For example, for a line, I
stored its starting and ending (x, y) points. For a rectangle, I stored
its 4 corner points (x,y). In listener for mouse move (or click, drag)
in JPanel, I got the current mouse's position, and checked each item in
the above array to see if the mouse was in any of them. This worked ok
with not too many lines or rectangles. And it did not use too much
memory also since only several integers needed to be saved for each
line or rectangle, etc.
Any idea of better method? (in terms of efficiency, for example, we may
have 10000 rectangels and 50000 lines. And of course we need it for
real time when user moves the mouse around).
By the way, I think one way is to make each line / rectangle / pie etc
an object. But that sounds like not efficient if we have many of them.
Right? And also I am not sure how to do it.
Or, is there any existing toolkit / framework etc that can do this job
easily?
Thanks.
so I repost it here.
I am wondering what is the best way to this common GUI task:
Draw some rectangles, lines, pies, etc (say, in a JPanel). Make sure
these things are "pointable" and "pickable": when mouse is moved over
it, we can press mouse key to "pick up" it and drag it around, etc.
Previously in some early school homework projects, I just stored the
locations for each of them in an array. For example, for a line, I
stored its starting and ending (x, y) points. For a rectangle, I stored
its 4 corner points (x,y). In listener for mouse move (or click, drag)
in JPanel, I got the current mouse's position, and checked each item in
the above array to see if the mouse was in any of them. This worked ok
with not too many lines or rectangles. And it did not use too much
memory also since only several integers needed to be saved for each
line or rectangle, etc.
Any idea of better method? (in terms of efficiency, for example, we may
have 10000 rectangels and 50000 lines. And of course we need it for
real time when user moves the mouse around).
By the way, I think one way is to make each line / rectangle / pie etc
an object. But that sounds like not efficient if we have many of them.
Right? And also I am not sure how to do it.
Or, is there any existing toolkit / framework etc that can do this job
easily?
Thanks.