java – 在JFrame中拖动JPanel
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在JFrame中拖动JPanel,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2098字,纯文字阅读大概需要3分钟。
内容图文
![java – 在JFrame中拖动JPanel](/upload/InfoBanner/zyjiaocheng/763/8d6563f1f4f34ba09259c3e67f6abe07.jpg)
我在JButton点击上将JPanel添加到JFrame.它将JPanel添加到框架中.该按钮将继续在点击事件上将JPanel添加到JFrame.没有限制.单击按钮时,我也将JPanel添加到List中.我这样做是因为使用for循环添加MouseMotionListener来处理拖拽JPanel的问题.
我现在面临的问题是阻力.当我添加第一个JPanel时,如果我拖动它,它会正确跟随鼠标光标坐标.当我添加第二个JPanel时,它也完全跟随鼠标.添加第二个后,如果尝试拖动第一个JPanel,第一个JPanel似乎遵循不同的坐标,初始位置将更改为其他位置.我不知道我在哪里犯了这个错误.请帮我解决这个问题.请仔细阅读以下代码.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class MyFrame extends JFrame {
JButton jb;
List<JPanel> mypanels = new ArrayList<JPanel>();
public MyFrame() {
jb = new JButton("Add Panel");
jb.setBounds(10, 10, 100, 50);
setSize(new Dimension(1000, 600));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
add(jb);
setVisible(true);
initialize();
}
public void initialize() {
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
JPanel panel = new JPanel();
panel.setBounds(150,150,200,200);
panel.setBackground(Color.black);
mypanels.add(panel);
add(panel);
repaint();
handleDrag();
}
});
}
public void handleDrag(){
for(int i=0;i<mypanels.size();i++) {
final int j = i;
mypanels.get(i).addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent me) {
me.translatePoint(me.getComponent().getLocation().x, me.getComponent().getLocation().y);
mypanels.get(j).setLocation(me.getX(), me.getY());
}
});
}
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
new MyFrame();
}
});
}
}
解决方法:
>也许看看Moving Windows by @camickr
>不要在同一时间将ComponentMover与ComponentResizer结合使用
内容总结
以上是互联网集市为您收集整理的java – 在JFrame中拖动JPanel全部内容,希望文章能够帮你解决java – 在JFrame中拖动JPanel所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。