我希望将一个图像从我的桌面拖放到我的JPanel/Jframe上,然后能够将该图像存储到一个BufferedImage对象中,并对其执行id喜欢的操作
有没有办法用MouseListener做到这一点?
这是一个虚构的完美世界的例子,我可以在其中做到这一点
Jframe jframe = new Jframe();
//set up jframe bla bla bla
MouseListener ml = new MouseListener(){
mouseRealeased(MouseEvent e){
//get droped thing from e
if(check if dropped thing is an image){
this.myImageField = (BufferedImage)droppedThing;
}
}
}
jframe.addMouseListener(ml);
我希望你能明白。不是在寻找超复杂的东西。我是个笨蛋,尽量简单谢谢:)
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.UIManager;
public class FileDrag {
public static void main(String[] args) {
new FileDrag();
}
public class FilePane extends JLayeredPane {
public FilePane() {
File[] images = new File("C:\\hold\\thumbnails").listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
String name = pathname.getName().toLowerCase();
return name.endsWith(".png") ||
name.endsWith(".jpg") ||
name.endsWith(".bmp") ||
name.endsWith(".gif");
}
});
int x = 0;
int y = 0;
for (File imgFile : images) {
try {
BufferedImage img = ImageIO.read(imgFile);
JLabel label = new JLabel(new ImageIcon(img));
label.setSize(label.getPreferredSize());
label.setLocation(x, y);
MouseHandler mh = new MouseHandler();
label.addMouseListener(mh);
label.addMouseMotionListener(mh);
add(label);
x += 20;
y += 20;
} catch (IOException exp) {
exp.printStackTrace();
}
}
}
@Override
public Dimension getPreferredSize() {
return new Dimension(800, 800);
}
public class MouseHandler extends MouseAdapter {
private Point offset;
@Override
public void mousePressed(MouseEvent e) {
JLabel label = (JLabel) e.getComponent();
moveToFront(label);
offset = e.getPoint();
}
@Override
public void mouseDragged(MouseEvent e) {
int x = e.getPoint().x - offset.x;
int y = e.getPoint().y - offset.y;
Component component = e.getComponent();
Point location = component.getLocation();
location.x += x;
location.y += y;
component.setLocation(location);
}
}
}
}
您还可以参考如何在Java GUI中使用鼠标光标拖动图像?
我创建了一个可以将图像导入标签的Swing应用程序,但我想做的是将导入的图像放入一个内部框架中,该框架将在图像删除后创建。 将图像放入Java应用程序 创建一个内部框架 使图像出现在内部框架中,而不是标签出现在JFrame中
问题内容: 我有一个小控制面板,只是我做的一个小应用程序。我想最小化/使用系统图标上下控制面板,以及电池寿命,日期,网络等。 有人可以给我一个提示,链接到教程或阅读的东西吗? 问题答案: 从Java 6开始,and 类支持此功能。在Javadocs中有一个非常广泛的示例: 您也可以查看本文或此技术提示。
问题内容: 我在Java项目中添加了一些外部库(在netbeans中)。 是否可以将外部jar库放入Java存档(而不是将其放入单独的(例如)“ lib”目录)? 问题答案: 当然可以。可以使用包含所有依赖项的“捆绑罐”下载一些开源项目。 您需要提取所有jar,然后将其再次打包到一个文件中。在此处 可以看到使用Ant进行此操作的示例。
问题内容: 我对将外部应用程序嵌入基于QT 5.5 Widget的应用程序感兴趣。我只关心它在Linux上的工作。我在GNOME上使用CentOS 7。 这是我尝试过的代码: 在此示例中,我将分别获取WinId,并仅对值进行硬编码以进行测试。要嵌入的应用程序正在运行。 当我执行我的应用程序时,它运行没有错误。并且要嵌入的应用程序会更改屏幕位置并调整其大小,但是不会嵌入到我的应用程序中。它仍然是一个
我们正在通过插件在EA中自动创建需求元素。但问题是我们无法将图像从目录导入到图像管理器,并将超链接添加到Requirement元素Notes。那么Enterprise architect是否提供了API来将映像从目录导入到映像管理器,并将超链接添加到Requirement元素注释中。