gpt4 book ai didi

java - 如何在 SWT 文本小部件中显示不可打印的字符

转载 作者:太空宇宙 更新时间:2023-11-04 11:09:41 25 4
gpt4 key购买 nike

如何在 SWT StyledText 小部件中以 Swing 使用空方 block 完成的方式显示不可打印的字符?

通过源字符串中的正则表达式将所有出现的符号替换为符号并不是解决方案,因为无法再使用原始代码点进行复制和粘贴。

最好的方法可能是拦截文本渲染并在那里替换它们,但这似乎打开了潘多拉魔盒......

编辑1:

控制字符是通常被编辑器跳过而不显示的字符,例如 HOP (U+0081)

最佳答案

对于 E4 RCP 应用程序,我附加了一些代码作为开始。

基本上是使用 IEventBroker 通过按钮添加/删除 TextViewer 的绘制器。

StyledText 可以从以下位置获取

styledText = tv.getTextWidget();

如上所述

import org.eclipse.jface.text.WhitespaceCharacterPainter;
public class TheEditor{
@Inject MPart thePart;
private WhitespaceCharacterPainter whitespaceCharacterPainter;

@PostConstruct
public void postConstruct(Composite parent) {
TextViewer tv = new TextViewer(parent, SWT.MULTI | SWT.V_SCROLL |SWT.H_SCROLL);
whitespaceCharacterPainter = new WhitespaceCharacterPainter(tv);
tv.addPainter(whitespaceCharacterPainter);
whitespaceCharacterPainter.deactivate(true);
}

@Inject
@Optional
public void updatePartByWSButton(@UIEventTopic(EventConstants.WHITE_CHARACTERS_STATUS) boolean newButtonStatus) {
final MElementContainer<MUIElement>container = thePart.getParent();
if (thePart.equals((MPart)container.getSelectedElement())){
wsToolBarButtonStatus = newButtonStatus;
if(wsToolBarButtonStatus){
this.whitespaceCharacterPainter.paint(IPainter.CONFIGURATION);
}
else{
whitespaceCharacterPainter.deactivate(true);
tv.removePainter(whitespaceCharacterPainter);
}
}
}
}

处理程序类

public class WhitespaceCharactersHandler {
boolean status;
@Execute
public void execute(final MToolItem item, IEventBroker broker) {
if (item.isSelected()){
status = true;
}
else{
status = false;
}
broker.post(EventConstants.WHITE_CHARACTERS_STATUS, status);
}
}

联系人界面:

public interface EventConstants {
String WHITE_CHARACTERS_STATUS = "WHITE-CHARACTERS-STATUS";
}

关于java - 如何在 SWT 文本小部件中显示不可打印的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46157691/

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