界面方面java比较弱 否则你用jb就应该可以在设计期间随意拖动按钮
连jb都没做到 估计要实现只能走偏门
我觉得如果你的界面很简单 或者说只有一个按钮那还好说
大不了用四个label夹着按钮判断位置
可要界面上东西多 那就太复杂了忽忽 我不是高手 说不定有很好的解决方法我不知道
但还是建议你想别的办法
连jb都没做到 估计要实现只能走偏门
我觉得如果你的界面很简单 或者说只有一个按钮那还好说
大不了用四个label夹着按钮判断位置
可要界面上东西多 那就太复杂了忽忽 我不是高手 说不定有很好的解决方法我不知道
但还是建议你想别的办法
home.nyc.rr.com/hayai
package tuodeng;import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import com.borland.jbcl.layout.*;
import com.borland.jbcl.control.*;
import javax.swing.*;public class AppletTuo extends Applet
{
XYLayout xYLayout1 = new XYLayout();
boolean isStandalone = false;
JButton jButton1 = new JButton();
TopoSymbol topo = new TopoSymbol();
int xx,yy;
Frametuo ff=new Frametuo(); Line line = new Line();
//Construct the applet
public AppletTuo()
{
} //Initialize the applet
public void init()
{
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
} //Component initialization
private void jbInit() throws Exception
{ ff.show();
jButton1.setText("jButton1");
jButton1.addMouseMotionListener(new AppletTuo_jButton1_mouseMotionAdapter(this));
jButton1.addMouseListener(new AppletTuo_jButton1_mouseAdapter(this));
jButton1.addActionListener(new AppletTuo_jButton1_actionAdapter(this));
xYLayout1.setWidth(400);
xYLayout1.setHeight(300);
this.setLayout(xYLayout1);
this.addMouseMotionListener(new AppletTuo_this_mouseMotionAdapter(this));
topo.setBorder(null);
topo.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(MouseEvent e) {
topo_mouseDragged(e);
}
});
line.setBackground(Color.red);
line.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
line_mouseDragged(e);
}
});
this.add(jButton1, new XYConstraints(37, 45, 60, 30));
this.add(topo, new XYConstraints(132, 145, 45, 45));
this.add(line, new XYConstraints(244, 31, 45, 45));
} //Get Applet information
public String getAppletInfo()
{
return "Applet Information";
} //Get parameter info
public String[][] getParameterInfo()
{
return null;
} void jButton1_actionPerformed(ActionEvent e)
{ } void this_mouseDragged(MouseEvent e)
{ // jButton1.move(e.getX(),e.getY());
} void jButton1_mouseReleased(MouseEvent e)
{
System.out.println(e.getX()+"::"+e.getY());
System.out.println(jButton1.getX()+"::"+jButton1.getY());
} void jButton1_mouseDragged(MouseEvent e)
{ xx=e.getComponent().getX()-jButton1.getWidth()/2;
yy=e.getComponent().getY()-jButton1.getHeight()/2;
e.translatePoint(xx,yy);
jButton1.move(e.getX(),e.getY()); } void topo_mouseDragged(MouseEvent e) {
if(topo.selected)
{
e.translatePoint(e.getComponent().getX()-topo.iconRect.width/2,e.getComponent().getY()-topo.iconRect.height/2);
topo.move(e.getX(),e.getY());
}
} void line_mouseDragged(MouseEvent e) {
e.translatePoint(e.getComponent().getX()-line.width/2,e.getComponent().getY()-line.height/2);
line.move(e.getX(),e.getY()); }
}class AppletTuo_jButton1_actionAdapter implements java.awt.event.ActionListener
{
AppletTuo adaptee; AppletTuo_jButton1_actionAdapter(AppletTuo adaptee)
{
this.adaptee = adaptee;
} public void actionPerformed(ActionEvent e)
{
adaptee.jButton1_actionPerformed(e);
}
}class AppletTuo_this_mouseMotionAdapter extends java.awt.event.MouseMotionAdapter
{
AppletTuo adaptee; AppletTuo_this_mouseMotionAdapter(AppletTuo adaptee)
{
this.adaptee = adaptee;
} public void mouseDragged(MouseEvent e)
{
adaptee.this_mouseDragged(e);
}
}class AppletTuo_jButton1_mouseAdapter extends java.awt.event.MouseAdapter
{
AppletTuo adaptee; AppletTuo_jButton1_mouseAdapter(AppletTuo adaptee)
{
this.adaptee = adaptee;
} public void mouseReleased(MouseEvent e)
{
adaptee.jButton1_mouseReleased(e);
}
}class AppletTuo_jButton1_mouseMotionAdapter extends java.awt.event.MouseMotionAdapter
{
AppletTuo adaptee; AppletTuo_jButton1_mouseMotionAdapter(AppletTuo adaptee)
{
this.adaptee = adaptee;
} public void mouseDragged(MouseEvent e)
{
adaptee.jButton1_mouseDragged(e);
}
}
二、GlassPane可视的时候将截获所有鼠标事件,书上是这么说的,结果好象是在骗我。
你不要见怪
我以前问过你这个问题的
就是有个机架,机架内有其它组件,
可以同时移动,还有交互功能