Java SWT选项卡文件夹:奇怪的绘图行为
各位专家好 说明 我有一个SWT页面,其中有一个TabFolder,其中包含许多动态创建的TabItems 在每个TabItem上,我装入一个复合材料,并将TabItem.setControl()设置为复合材料。 然后,我使用这个组合作为我绘制项目的页面。 我画了一组控件,包括文本框和标签 对于第一个默认选项卡,这可以正常工作。没问题 问题 在不是第一个选项卡的选项卡上,我有以下问题:Java SWT选项卡文件夹:奇怪的绘图行为,java,swt,redraw,Java,Swt,Redraw,各位专家好 说明 我有一个SWT页面,其中有一个TabFolder,其中包含许多动态创建的TabItems 在每个TabItem上,我装入一个复合材料,并将TabItem.setControl()设置为复合材料。 然后,我使用这个组合作为我绘制项目的页面。 我画了一组控件,包括文本框和标签 对于第一个默认选项卡,这可以正常工作。没问题 问题 在不是第一个选项卡的选项卡上,我有以下问题: 我无法在视觉上改变 我的控件的已编辑/已启用状态 我无法直观地设置文本 我的元素的内容 我的控件看起来已禁
- 我无法在视觉上改变 我的控件的已编辑/已启用状态
- 我无法直观地设置文本 我的元素的内容
我猜TabItem本身已禁用。我建议在代码的某个地方添加一个循环,该循环接受文本控件并打印其启用状态,然后继续使用父组合并执行相同的操作:
Control c = text;
while (c != null) {
System.out.println(c.getEnabled()+" "+c);
c = c.getParent();
}
这会让你知道这是否是问题的原因。如果没有,则在Text.setEditable()
中设置一个断点,并检查谁调用它
[编辑]如果文本可编辑但不可见(即灰色对灰色),请检查返回的内容。可能有人将两者设置为相同的颜色。我找到了问题的根源 用于使用控件填充TabItem组合的代码被调用了两次 所以所有的控件都是重复的,我们的控制器只对实际使用的控件的一半有活动引用 我无法准确解释我们看到的绘图行为,但是删除其中一个调用导致问题消失
我希望有一天我的问题能帮助别人。我的问题是我认为我的控件确实是可编辑的。我只是不认为UI显示了这个事实。我可以用鼠标标记内容并用CTRL+C复制它,但在执行此操作时,控件总是看起来被禁用,并且从不显示内容、鼠标或标记。当您将“可编辑”设置为false(复制可以工作,但无法编辑文本)时,此行为是默认行为。检查谁调用了setEditable()。我只调用了一次setEditable(true);在我的代码中。但这不是内容不可编辑的问题。内容不可见。我只在文本框内看到灰色背景。没有文本。无论我在代码中做什么,灰显的外观都会保持不变。检查
getBackground()
和getForeground()
的结果。也许有人把这两种颜色都调成了同一种颜色。