各位大侠,我正在做一个网络拓扑设计的软件,想用java swing实现。
问题是,如何用鼠标拖着一个图片在panel到处走?同时,我还希望两个图片之间的连接线也能根着相应地变化,请问,这些如何实现。
着急中,请各位大侠务必帮忙解决,不胜感激!
问题是,如何用鼠标拖着一个图片在panel到处走?同时,我还希望两个图片之间的连接线也能根着相应地变化,请问,这些如何实现。
着急中,请各位大侠务必帮忙解决,不胜感激!
调试欢乐多
http://www.servasoft.com
import java.applet.Applet;
import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Event;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Point;public class ImageViewer extends Applet{
private String msg;
private int width;
private int height;
private Image offI;
private Image img;
private Graphics offG;
private MediaTracker imageTracker;
private Point pointInitial;
private int posImageX;
private int posImageY;
int tailleImageX;
int tailleImageY;
int positionInitialeX;
int positionInitialeY;
Object frame; public void init(){
String s = "img\\4.jpg";//imagePath
img = getImage(getCodeBase(), s);
setBackground(new Color(255, 200, 50));
imageTracker = new MediaTracker(this);
imageTracker.addImage(img, 0);
try {
imageTracker.waitForID(0);
}
catch(InterruptedException _ex) { }
tailleImageX = img.getWidth(this);
tailleImageY = img.getHeight(this);
System.out.println(tailleImageX + "," + tailleImageY);
try {
Integer integer = new Integer(getParameter("width"));
width = integer.intValue();
}
catch(Exception _ex){
width = 200;
}
try {
Integer integer1 = new Integer(getParameter("height"));
height = integer1.intValue();
}
catch(Exception _ex){
height = 200;
}
offI = createImage(tailleImageX, tailleImageY);
offG = offI.getGraphics();
for(frame = getParent(); !(frame instanceof Frame); frame = ((Component)frame).getParent());
repaint();
} public void start(){
offG.drawImage(img, 0, 0, this);
repaint();
} public final boolean mouseDown(Event event, int i, int j){
pointInitial = new Point(i, j);
((Frame)frame).setCursor(new Cursor(12));
positionInitialeX = posImageX;
positionInitialeY = posImageY;
return true;
} public final boolean mouseDrag(Event event, int i, int j){
posImageX = positionInitialeX - (pointInitial.x - i);
posImageY = positionInitialeY - (pointInitial.y - j);
repaint();
return true;
} public final boolean mouseUp(Event event, int i, int j){
((Frame)frame).setCursor(new Cursor(0));
return true;
} public final void update(Graphics g){
paint(g);
} public final void paint(Graphics g){
if(posImageX < width - tailleImageX)
posImageX = width - tailleImageX;
if(posImageY < height - tailleImageY)
posImageY = height - tailleImageY;
if(posImageX > 0)
posImageX = 0;
if(posImageY > 0)
posImageY = 0;
g.drawImage(offI, posImageX, posImageY, this);
} public ImageViewer(){
pointInitial = new Point(0, 0);
tailleImageX = 540;
tailleImageY = 380;
}
}
如果应用在Applet中,应该选用哪一个?
还有就是他们的收费情况,商业应用也是免费的么?
谢谢!
看了一下servasoft,感觉好像能支持web在线显示,但是Web在线编辑,好像要做的工作很多。