gpt4 book ai didi

java - 为什么应用的 Font 在 swt 中的 font.dispose() 上被删除?

转载 作者:行者123 更新时间:2023-11-30 06:05:00 25 4
gpt4 key购买 nike

我创建了一个 SWT 表并向其中添加了列。我想单独将粗体字体应用于标题行。所以我的代码如下所示

 Table table= new Table(top, tableStyle);  
Font font = new Font(null, StringUtils.EMPTY, 9, SWT.BOLD);
for (int i = 0; i < titles.length; i++)
{
new TableColumn(table, SWT.NONE);
header.setFont(i, font);
header.setText(i, titles[i]);
}
font.dispose();

在上面的代码中,我已经进行了处理,因为这是一个很好的做法。但这是从标题中删除字体样式。如果我删除最后一行,字体仍会应用。

这里有什么错误吗?或者这是预期的行为?

最佳答案

您需要等待,只有当您不再需要时才dispose() Font。您可以将处置与表的处置事件联系起来,这样您就不必手动处置它:

public static void main(String[] args)
{
final Display d = new Display();
Shell s = new Shell(d);
s.setLayout(new FillLayout());

Table table = new Table(s, SWT.NONE);
Font font = new Font(null, "", 12, SWT.BOLD);
for (int i = 0; i < 3; i++)
{
TableItem item = new TableItem(table, SWT.NONE);
item.setFont(font);
item.setText("" + i);
}

table.addListener(SWT.Dispose, e -> font.dispose());

s.pack();
s.open();

while (!s.isDisposed())
{
if (!d.readAndDispatch())
d.sleep();
}
d.dispose();
}

关于java - 为什么应用的 Font 在 swt 中的 font.dispose() 上被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47673735/

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