gpt4 book ai didi

java - 无布局的 TransferHandler

转载 作者:行者123 更新时间:2023-11-30 02:10:06 25 4
gpt4 key购买 nike

我正在尝试将 JPanel 编码为在其上绘制图形的空间。为此,我将布局设置为 null

mainPanel.setLayout(null);

然后,我在主面板中插入了一些按钮,以尝试实现拖放功能。

btn.setTransferHandler(new TransferHandler("text"));
btn.addMouseListener(new MouseAdapter(){
public void mouseDragged(MouseEvent e){
Dimension size=btn.getPreferredSize();
JButton button = (JButton)e.getSource();
TransferHandler handle = button.getTransferHandler();
handle.exportAsDrag(button, e, TransferHandler.COPY);
}
});

我的问题是,我可以在空布局中使用 theTransferHandler 吗?一旦我开始拖动东西,鼠标光标就会变成这样的形状: forbidden action

最佳答案

TransferHandler 用于传输数据,而不是在面板上移动按钮。所以布局没有任何影响。

在您的情况下,您将 TransferHandler 设置为“文本”,这意味着您正在尝试将按钮的“文本”传输到其他组件。

btn.addMouseListener(new MouseAdapter(){
public void mouseDragged(MouseEvent e){
Dimension size=btn.getPreferredSize();
JButton button = (JButton)e.getSource();
TransferHandler handle = button.getTransferHandler();
handle.exportAsDrag(button, e, TransferHandler.COPY);
}
});

MouseListener 中没有 mouseDragged 事件。 mouseDragged 事件在 MouseMotionListener 中生成。

当我将 MouseListener 添加到组件以支持 DnD 时,我总是将逻辑添加到 mousePressed 事件中。

阅读 Swing 教程中关于 Drag and Drop and Data Transfer 的部分了解更多信息和示例以帮助您入门。

关于java - 无布局的 TransferHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50380048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com