【问题标题】:issue drawing aligned text using TextFlow and FlowPage使用 TextFlow 和 FlowPage 绘制对齐文本
【发布时间】:2012-03-12 19:15:39
【问题描述】:

我正在使用包含 TextFlow 对象的 FlowPage 对象绘制多行文本标签。我的标签类的代码是:

class TransitionLabel extends FlowPage {
    private TextFlow content;
    
    public TransitionLabel()
    {
        setForegroundColor(ColorConstants.white);
        setHorizontalAligment(PositionConstants.CENTER);
        content = new TextFlow();
        content.setOpaque(true);
        content.setText("");
        add(content);
    }
    
    public void setText(String content)
    {
        this.content.setText(content);
        revalidate();
        repaint();
    }
    
    public String getText()
    {
        return this.content.getText();
    }
    
}

当控件刷新(修改后)时,它会像下面截图中的发送标签。

我做错了吗?谢谢你的帮助

PS 可以找到相同的截图here

PPS 我编辑了与问题无关的方法getPreferredSize

【问题讨论】:

  • 谁负责实际设置标签的大小?
  • 其实我也不清楚。这个标签被添加到代表我正在编写的Eclipse插件中的ConnectionEditPart的图中,我不知道是哪个对象负责设置标签的大小(我认为布局关联的布局默认与FlowPage关联)。这是一个重要的细节吗?有没有办法可以检查并给您更详细的答案?另外,如果您因为getPreferredSize(...)而问这个问题,我应该提到我从教程中复制了片段,但也删除了问题仍然存在的方法
  • TransitionLabel 是如何使用的?作为链接中的装饰器?

标签: java eclipse swt draw2d


【解决方案1】:

FlowPage 不会自行调整大小。它只告诉布局管理器它的父图形 - 根据要求 - 它想要具有什么大小。我不使用什么布局管理器,但也许它不会调整您的标签大小。您可以尝试添加

setSize(getPreferredSize());

在您的 setText(..) 方法中重新验证之前。

【讨论】:

  • 感谢您的提示。我试过了,并没有解决问题。我认为问题不在于FlowPage 的大小,而是它显示了相同内容的两个副本:第一个向左对齐,第二个在中心对齐,正如我指定的那样。作为旁注:我从示例中删除了getPreferredSize 方法,以简化问题...
  • 无论如何,我认为问题不在于您的标签 - 我的标签基本相同:TextFlow 中的 FlowPage。所以它必须是如何使用它的问题。如果标签的文本被绘制了两次,也许你添加了两个标签?还有什么让我觉得奇怪:为什么第一行没有画两次?
猜你喜欢
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 2014-08-10
  • 2012-05-03
  • 2016-06-25
  • 2015-07-09
  • 2011-03-28
  • 1970-01-01
相关资源
最近更新 更多