gpt4 book ai didi

java - 自定义剪贴板数据

转载 作者:行者123 更新时间:2023-12-01 23:11:17 25 4
gpt4 key购买 nike

如何将剪贴板信息存储为以非标准、自定义定义方式表示的数据?

我的公司有一个定制的 SWT 控件,用于创建带有掩码的文本框,允许用户填写电话号码等提示:

example1

example2

复制此控件中的数据时,我想要一种使数据的后续粘贴随上下文而变化的方法。例如,如果将上下文复制并粘贴到文本文件中,我希望包含屏蔽字符。但是,如果将其粘贴到我们系统中的其他某些控件中,我希望它仅粘贴非掩码字符。由于任意字符都可以用作掩码控件中的掩码字符,因此接收粘贴的控件不可能解析粘贴结果。因此,我认为实现此目的的唯一方法是自定义复制数据在剪贴板中的存储方式。这合理吗?

最佳答案

如果您使用 Text 的自定义版本控制和覆盖 copy()方法你可以用自己的代码复制到 Clipboard目的。剪贴板中数据的格式由Transfer控制。您使用的对象。您可以提供几种不同的Transfer对象和数据:

Clipboard clipboard = new Clipboard(display);

String maskedData = "*******";
String unmaskedData = "password";

TextTransfer textTransfer = TextTransfer.getInstance();
UnmaskedTransfer umaskedTransfer = UnmaskedTransfer.getInstance();

Transfer [] transfers = new Transfer [] {textTransfer, umaskedTransfer};
Object [] data = new Object [] {maskedData, unmaskedData};

clipboard.setContents(data, transfers);

clipboard.dispose();

UnmaskedTransfer是你自己的Transfer具有未屏蔽密码的实现。系统中需要获取未屏蔽文本的控件可以使用 Transfer 向剪贴板请求数据。对象(假设这些控件位于您的代码中并且可以自定义来执行此操作)。

不知道有哪些控件特别Transfer对象将使用TextTransfer并接收屏蔽密码。

自定义Text控件可能看起来像这样:

public class CustomText extends Text
{
public CustomText(final Composite parent, final int style)
{
super(parent, style);
}

@Override
public void copy()
{
// TODO your copy code
}

@Override
public void paste()
{
// TODO your paste code
}

@Override
protected void checkSubclass()
{
// Don't call super to stop subclassing exception
}
}

关于java - 自定义剪贴板数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21940399/

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