gpt4 book ai didi

java - SWT CTab文件夹 : Add watermark (in case of no tabs)

转载 作者:行者123 更新时间:2023-11-29 03:17:23 26 4
gpt4 key购买 nike

我正在寻找一种向 SWT CTabFolder 添加水印的方法。我的目标是如果没有选项卡,选项卡文件夹不会看起来“无聊”。

我知道 CTabFoldersetBackgroundImage 方法。不幸的是,这似乎是不可调整的,只能以“平铺”格式显示图像。

你知道有什么方法可以将居中图像添加到空标签文件夹吗?

最佳答案

您必须为 SWT.PaintSWT.Resize 添加自己的 Listener。然后在 GC 上绘制您的 Image。这是一个例子:

public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("StackOverflow");
shell.setLayout(new FillLayout());

final Image image = new Image(null, "info.png");

final CTabFolder folder = new CTabFolder(shell, SWT.TOP);
folder.addListener(SWT.Paint, new Listener()
{
@Override
public void handleEvent(Event event)
{
if (image.isDisposed())
return;

Rectangle parentSize = folder.getBounds();
int tabHeight = folder.getTabHeight();
Rectangle imageSize = image.getBounds();

event.gc.drawImage(image, (parentSize.width - imageSize.width) / 2, (parentSize.height - imageSize.height + tabHeight) / 2);
}
});
folder.addListener(SWT.Resize, new Listener()
{
@Override
public void handleEvent(Event event)
{
folder.redraw();
}
});

CTabItem item = new CTabItem(folder, SWT.CLOSE);
item.setText("TEST");

Composite content = new Composite(folder, SWT.NONE);

content.setLayout(new FillLayout());

new Label(content, SWT.NONE).setText("bla");

item.setControl(content);

shell.pack();
shell.setSize(400, 200);
shell.open();

while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();

image.dispose();
}

当你有一个 CTabItem 时看起来像这样:

enter image description here

关闭项目时像这样:

enter image description here

关于java - SWT CTab文件夹 : Add watermark (in case of no tabs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25723956/

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