扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
首先这种效果我没有做过,因为现在实在没有人用swing写GUI客户端了。
创新互联从2013年开始,先为武义等服务建站,武义等地企业,进行企业商务咨询服务。为武义企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
让我现在给你写个完整的代码也么那么多时间》
首先分隔成三个窗体,用三个jpanel放到jframe中,然后仔细的设置窗体和jpanel的宽高和位置就能了,
至于拖动变成竖的,你只需要在底下console的窗口的jpanel加上MouseListener,具体的可靠下面的代码:
注意的是,当底下的console的位置变更,变成竖的了,其他的jpanel的位置你也需要进行更新调整
myFrame.addMouseListener(new MouseAdapter() {
// 按下(mousePressed
// 不是点击,而是鼠标被按下没有抬起)
public void mousePressed(MouseEvent e) {
// 当鼠标按下的时候获得窗口当前的位置
origin.x = e.getX();
origin.y = e.getY();
}
});
myFrame.addMouseMotionListener(new MouseMotionAdapter() {
// 拖动(mouseDragged
// 指的不是鼠标在窗口中移动,而是用鼠标拖动)
public void mouseDragged(MouseEvent e) {
// 当鼠标拖动时获取窗口当前位置
Point p = myFrame.getLocation();
// 设置窗口的位置
// 窗口当前的位置 + 鼠标当前在窗口的位置 - 鼠标按下的时候在窗口的位置
myFrame.setLocation(p.x + e.getX() - origin.x, p.y + e.getY()
- origin.y);
}
});
把图片或文件发出去不是难事,主要是拖动作用的实现。
以下代码实现了当拖动文件到Panel上时能获得文件对象,其余的你实现发送就可以了。
import java.awt.BorderLayout;
import java.awt.datatransfer.*;
import java.io.*;
import java.util.List;
import javax.swing.*;
public class TestFrame extends javax.swing.JFrame {
private JPanel panel;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
TestFrame inst = new TestFrame();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
public TestFrame() {
super();
initGUI();
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
{
panel = new JPanel();
getContentPane().add(panel, BorderLayout.CENTER);
panel.setTransferHandler(new TransferHandler() {
public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {
return true;
}
public boolean importData(JComponent comp, Transferable t) {
try {
if (t.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
List files;
files = (List) t
.getTransferData(DataFlavor.javaFileListFlavor);
for (int i = 0; i files.size(); i++) {
File f = (File) files.get(i);
System.out.println(f.getAbsolutePath());
}
return true;
}
} catch (UnsupportedFlavorException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return super.importData(comp, t);
}
});
}
pack();
setSize(400, 300);
} catch (Exception e) {
e.printStackTrace();
}
}
}
你点击右键后拖动鼠标,然后拖动到一个位置,点击左键,获取到当前鼠标的位置,然后重新设置下需要移动的那个JLabel的坐标就可以了。
拖曳(Drag and Drop)在Swing中有支持,直接调用setDragEnabled就可以实现“可拖动”效果。
常用的控件中都有:setDragEnabled、setDropMode、setDropTarget。
以上回答你满意么?
少侠,这就需要你给要拖的数据添加监听了。通过监听获取当前拖的数据,在获取目标位置。具体操作你还是去看一下监听的API吧,看你需要的什么监听。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流