gpt4 book ai didi

java - 如何消除 TreeItem 小部件中选定文本周围的矩形框?

转载 作者:行者123 更新时间:2023-12-02 07:56:46 25 4
gpt4 key购买 nike

我想实现一棵树,里面有可检查的根节点和一些参数(实际上,本例中的参数并不重要)。因此,我制作一棵树,然后放置两列,然后放置一个 TreeItem。然后我需要放置一个带有复选框按钮的 TreeEditor Button button = new Button(tree, SWT.CHECK);

有一个问题:如果未设置 TreeItem 中的文本(或等于“”),则在伸展树(Splay Tree)节点元素时,将显示一个小矩形,并且不会隐藏。如果文本设置为TreeItem,则TreeItem中的文本周围将显示矩形,但如果鼠标移出TreeItem,矩形将隐藏。有没有办法不显示这个矩形?

Empty text area

以下是来源:

Tree tree = new Tree(composite_1, SWT.NONE);
tree.setHeaderVisible(true);
tree.setLinesVisible(true);

TreeColumn trclmnProperty = new TreeColumn(tree, SWT.NONE);
trclmnProperty.setWidth(100);
trclmnProperty.setText(Messages.AppWindow_trclmnProperty_text);

TreeColumn trclmnValue = new TreeColumn(tree, SWT.NONE);
trclmnValue.setWidth(100);
trclmnValue.setText(Messages.AppWindow_trclmnValue_text);

// Reading contents of a tree
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
File f = new File("ftplist.xml");
org.w3c.dom.Document doc = builder.parse(f);
NodeList ftpList = doc.getElementsByTagName("ftp");

for (int i = 0; i < ftpList.getLength(); i++) {
NodeList nodeList = ((Element) ftpList.item(i)).getElementsByTagName("ftpName");
TreeItem treeItemRootNode = new TreeItem(tree, SWT.NONE);

TreeEditor treeRootNodeEditor = new TreeEditor(tree);

final Button button = new Button(tree, SWT.CHECK);
button.setText(nodeList.item(0).getTextContent());
nodeList = ((Element) ftpList.item(0)).getElementsByTagName("ftpEnabled");
button.setSelection(nodeList.item(0).getTextContent().equalsIgnoreCase("true"));

button.pack();

treeRootNodeEditor.minimumWidth = button.getSize().x;
treeRootNodeEditor.horizontalAlignment = SWT.LEFT;

treeRootNodeEditor.setEditor(button, treeItemRootNode, 0);

nodeList = ((Element) ftpList.item(0)).getElementsByTagName("ftpHost");
TreeItem treeItemFtpHost = new TreeItem(treeItemRootNode, SWT.NONE);
treeItemFtpHost.setText(new String[] { "Host", nodeList.item(0).getTextContent() });
}

} catch (ParserConfigurationException e1) {
e1.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

ftplist.xml - 它只是一个配置文件,仅包含 ftp 设置,如主机、端口等。

ftplist.xml:

<?xml version="1.0"?>
<ftps>
<ftp>
<ftpName>SuperFtp</ftpName>
<ftpEnabled>true</ftpEnabled>
<ftpHost>ftp.com</ftpHost>
<ftpPort>21</ftpPort>
<ftpLogin>Login</ftpLogin>
<ftpPassword>Pass</ftpPassword>
<ftpUsePassiveMode>true</ftpUsePassiveMode>
<ftpRemoteDir>/</ftpRemoteDir>
<localSyncDir>C:/</localSyncDir>
</ftp>
<ftp>
<ftpName>SuperFtp2</ftpName>
<ftpEnabled>true</ftpEnabled>
<ftpHost>ftp.com</ftpHost>
<ftpPort>21</ftpPort>
<ftpLogin>Login</ftpLogin>
<ftpPassword>Pass</ftpPassword>
<ftpUsePassiveMode>true</ftpUsePassiveMode>
<ftpRemoteDir>/</ftpRemoteDir>
<localSyncDir>C:/</localSyncDir>
</ftp>
<ftps>

最佳答案

以下代码片段应阻止您的Tree绘制其选择:

tree.addListener(SWT.EraseItem, new Listener()
{
public void handleEvent(Event event)
{
if ((event.detail & SWT.SELECTED) != 0)
{
event.detail &= ~SWT.SELECTED;
}
}
});

关于java - 如何消除 TreeItem 小部件中选定文本周围的矩形框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9520060/

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