关于动态生成控件的位置

侠雨飞飞 2006-12-04 05:33:18
AWT或者swing都需要用得布局控制器
如果我想通过拖曳某个控件从而在某个位置动态生成一个控件,是不是做不到?
我感觉好像不行

我现在做工况图的维护,也就是在一张背景图上,用标签来对应测点的位置,各位可有更好的解决方案?

...全文
245 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
侠雨飞飞 2006-12-07
  • 打赏
  • 举报
回复
若将jPanel3的layout设置为空
我将其中的按钮序列化,然后再反序列化,可以成功,但,向其中动态增加按钮失败(没有显示)

如果不设置为空,可以动态增加按钮,但反序列化时候,按钮位置给重置了
我怀疑是布局控制器的问题
但不知怎么解决
侠雨飞飞 2006-12-06
  • 打赏
  • 举报
回复

static Point origin = new Point();

//鼠标拖动
public void jLabel1_mouseDragged(MouseEvent mouseEvent) {
Point p = jLabel1.getLocation();
jLabel1.setLocation(p.x + mouseEvent.getX() - origin.x, p.y + mouseEvent.getY()
- origin.y);
repaint();


}
//鼠标按下

public void jLabel1_mousePressed(MouseEvent e) {
origin.x = e.getX();
origin.y = e.getY();

}
fool_leave 2006-12-06
  • 打赏
  • 举报
回复
你拖动后要设置被拖动的component的位置
代码贴出来看看,就是拖动的代码
侠雨飞飞 2006-12-06
  • 打赏
  • 举报
回复
jPanel3的layout是采用xYLayout
这个哪里需要特别设置呢?
fool_leave 2006-12-06
  • 打赏
  • 举报
回复
问题在你的layout设置上
侠雨飞飞 2006-12-06
  • 打赏
  • 举报
回复
如果拖曳效果比较难那就算了
现在的问题是,我虽然用鼠标拖动组件到一个新的位置
但是每次我向当前的jpanel里增加新的组件时候
调用
jPanel3.add(jLabel);
jPanel3.validate();
结果原来被拖动的组件又回到拖动前的位置
这个应该怎样避免呢

我现在想用序列化把整个jpanel保存起来
Jeansken 2006-12-05
  • 打赏
  • 举报
回复
留意一下Container.add(comp,index)方法,这个index就是你要插入的位置。
混沌骑士 2006-12-05
  • 打赏
  • 举报
回复
按照你的情况,用borland的xylayout比较好实现 可以具体到x、y轴的坐标
fool_leave 2006-12-05
  • 打赏
  • 举报
回复
从另外一层拖过来其实就是remove和add的动作而已,没什么深奥的
至于虚线来显示拖动对象,这个非常难.严格的来说要通过手动绘制来实现,当然你也可以简单的设置鼠标cursor来实现,就是自己做个带小虚线方框的鼠标.
混沌骑士 2006-12-05
  • 打赏
  • 举报
回复
组件拖拽效果?java恐怕做起来比较困难
侠雨飞飞 2006-12-05
  • 打赏
  • 举报
回复
拖拽的时候,怎么能拖到另外一层,我用xylayout,我想从另外一层把控件拖进来
另外,拖拽时候,怎样才能显示一个虚线的拖动对象?就象windows那样?

多谢~
fool_leave 2006-12-04
  • 打赏
  • 举报
回复
当然可以实现了

既然java可以通过Remove和add方法来添加删除控件,那空间的位置也就不存在问题了。你还可以动态设置它的layout

难点在于怎么确定控件应该添加到layout的什么点上。你说的情况我觉得最好的实现方法是自己实现LayoutManager,这样比较好决定控件被拖曳到什么位置上。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧