Java TransferHandler与Jbuttons更新Jbutton文本



我的问题是如何知道拖放位置的文本是什么。这是当前的工作代码。

     gameCell.addMouseListener(new MouseAdapter() {
         public void mousePressed(MouseEvent e){
             JButton button = (JButton)e.getSource();
             int currentNumber = Integer.parseInt(button.getText());
             TransferHandler handle = button.getTransferHandler();
             handle.exportAsDrag(button, e, TransferHandler.COPY);

这个想法是有一个gameboard,它只是一堆单元格(所有的jbutton),一个大表格。当我将一个单元格拖动到另一个单元格时,被拖动的单元格的值将成为被单击的单元格的值,因此,在被拖动的单元格复制之前,我如何告诉JButton单元格的原始值呢?

如果你只是想把文本从一个按钮"复制"到另一个按钮,那么你可以使用下面的代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DragIcon extends JPanel
{
    public DragIcon()
    {
        TransferHandler iconHandler = new TransferHandler( "icon" );
        MouseListener dragListener = new DragMouseAdapter();
        JLabel label1 = new JLabel("Label1");
        label1.setTransferHandler( iconHandler );
        label1.addMouseListener(dragListener);
        label1.setIcon( new ImageIcon("copy16.gif") );
        JLabel label2 = new JLabel("Label2");
        label2.setTransferHandler( iconHandler );
        label2.addMouseListener(dragListener);
        add( label1 );
        add( label2 );
    }
    private class DragMouseAdapter extends MouseAdapter
    {
        public void mousePressed(MouseEvent e)
        {
            JComponent c = (JComponent)e.getSource();
            TransferHandler handler = c.getTransferHandler();
            handler.exportAsDrag(c, e, TransferHandler.COPY);
//          handler.exportAsDrag(c, e, TransferHandler.MOVE);
        }
    }
    private static void createAndShowGUI()
    {
        JFrame frame = new JFrame("Drag Icon");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new DragIcon());
        frame.setLocationByPlatform( true );
        frame.setSize(200, 100);
        frame.setVisible( true );
    }
    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowGUI();
            }
        });
    }
}

默认的TransferHandler允许您指定要复制的属性。在我的例子中,我复制图标。在您的情况下,您将使用:

TransferHandler iconHandler = new TransferHandler( "text" );

复制文本。

注意,在我的例子中,我也试图将图标从一个标签"移动"到另一个标签,但它不起作用。我不确定需要改变什么来移动属性

最新更新