sách gpt4 ai đã đi

java - 启用跨不同应用程序的复制/粘贴

In lại 作者:行者123 更新时间:2023-11-29 08:47:54 29 4
mua khóa gpt4 Nike

Windows 中 SWT Text 的默认上下文菜单有几个我们不想要的选项。由于操作系统提供的默认上下文菜单无法修改,因此我创建了一个自定义上下文菜单,其中只有基本的文本操作,例如文本框的删除、剪切、复制和粘贴。

Custom Text context Menu

现在的问题是,当我从另一个应用程序复制文本并尝试粘贴到 TextBox 时,粘贴似乎不起作用。但是当我们在应用程序本身内复制/剪切文本时它会起作用。

这里是复制粘贴的代码。粘贴操作:

private class PasteActionHandler extends Action {

/** Creates a new instance. */
private PasteActionHandler() {
...
setEnabled(false);
}

@Ghi đè
public void runWithEvent(Event event) {
if (activeTextControl != null && !activeTextControl.isDisposed()) {
activeTextControl.paste();
updateActionsEnableState();
return;
}
}

/**
* Updates the state of the Paste Action.
*/
public void updateEnabledState() {
if (activeTextControl != null && !activeTextControl.isDisposed()) {
boolean canPaste = false;
if (activeTextControl.getEditable()) {
Clipboard clipboard = new Clipboard(activeTextControl.getDisplay());
TransferData[] td = clipboard.getAvailableTypes();
for (int i = 0; i < td.length; ++i) {
if (TextTransfer.getInstance().isSupportedType(td[i])) {
canPaste = true;
phá vỡ;
}
}
clipboard.dispose();
}
setEnabled(canPaste);
return;
}
setEnabled(false);
}
}

复制操作:

private class CopyActionHandler extends Action {

private CopyActionHandler() {
...
setEnabled(false);
}

@Ghi đè
public void runWithEvent(Event event) {
if (activeTextControl != null && !activeTextControl.isDisposed()) {
activeTextControl.copy();
updateActionsEnableState();
return;
}
}

/**
* Updates the state of the {@link Action}.
*/
public void updateEnabledState() {
if (activeTextControl != null && !activeTextControl.isDisposed()) {
setEnabled(activeTextControl.getSelectionCount() > 0);
return;
}
setEnabled(false);
}
}

如您所见,我调用了文本控件的复制和粘贴函数来执行这些操作。SWT 中还有获取系统剪贴板的方法吗?

1 Câu trả lời

要从 SWT 复制剪贴板中的内容,我使用代码:

    String textData = textControl.getText();
if (textData.length() > 0) {
org.eclipse.swt.dnd.Clipboard cb = new org.eclipse.swt.dnd.Clipboard(display);
org.eclipse.swt.dnd.TextTransfer textTransfer = org.eclipse.swt.dnd.TextTransfer.getInstance();
cb.setContents(new Object[]{textData}, new Transfer[]{textTransfer});
}

您可以尝试使用 activeTextControl.copy() 函数,看看它是否有效

关于java - 启用跨不同应用程序的复制/粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24199047/

29 4 0
Bài viết được đề xuất: bash - 使用 cURL 下载目录中的所有文件
Bài viết được đề xuất: java - 在 PreparedStatement 中使用 setDate
Bài viết được đề xuất: java - 通过ssh在远程系统上执行java代码
Bài viết được đề xuất: java - 如何在 Eclipse 中运行单个测试包及其子包?
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com