java - 通过在小程序中拖放将文本添加到图像上

标签 java swing drag-and-drop applet awt

我需要在 java 小程序中显示图像,并使用文本元素(标签)移动到用户选择的点。是否可以通过将文本拖放到图像上来实现?我需要使用什么方法?

我正在寻找类似this的东西.

编辑:感谢您的有用回复。下面的代码工作正常!但是如何通过图像中的 x,y 坐标获取文本位置呢?

public class MouseDragTest extends JPanel {

    private static final String TITLE = "Drag me!";
    private static final int W = 640;
    private static final int H = 480;
    private Point textPt = new Point(W / 2, H / 2);
    private Point mousePt;
    Image img;

    public MouseDragTest() {
        img = Toolkit.getDefaultToolkit().createImage("my_image.jpg");
        this.setFont(new Font("Serif", Font.ITALIC + Font.BOLD, 32));
        this.addMouseListener(new MouseAdapter() {

            @Override
            public void mousePressed(MouseEvent e) {
                mousePt = e.getPoint();
                repaint();
            }
        });
        this.addMouseMotionListener(new MouseMotionAdapter() {

            @Override
            public void mouseDragged(MouseEvent e) {
                int dx = e.getX() - mousePt.x;
                int dy = e.getY() - mousePt.y;
                textPt.setLocation(textPt.x + dx, textPt.y + dy);
                mousePt = e.getPoint();
                repaint();
            }
        });
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(W, H);
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        int w2 = g.getFontMetrics().stringWidth(TITLE) / 2;
        g.drawImage(img, 0, 0, null);
        g.drawString(TITLE, textPt.x - w2, textPt.y);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            public void run() {
                JFrame f = new JFrame(TITLE);
                f.add(new MouseDragTest());
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.pack();
                f.setLocationRelativeTo(null);
                f.setVisible(true);

            }
        });
    }
}

最佳答案

您可以在 paintComponent() 中使用 drawImage() 来显示您的发票,就像显示 here 一样。 ,然后拖动文本,如显示 here 。另一种方法是使用 The Glass Pane .

关于java - 通过在小程序中拖放将文本添加到图像上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14609083/

相关文章:

java - 添加 JComponent 后 getY() 返回 0

java - 如何在 MVC 中使用线程?

java - 在 Eclipse 中的 "mvn package"上运行 "Build project"

java - 以下技术获取 RequestContext 是否正确

java - 如何初始化Graphics g?

java - 如何设置 JFrame 的最小尺寸并使其根据框架厚度进行调整?

java - 处理 JButton 上的 MouseClick 的最佳方法

android - 第一次在 GridView 中拖放时缺少 ImageView 源

html - HTML 5 可以拖放处理文件夹吗?

java - 如何使用不同的 SSL 客户端身份验证证书创建 Apache HttpClient 池