【问题标题】:JFace: Place Field Decoration inside a field?JFace:在字段内放置字段装饰?
【发布时间】:2014-08-22 19:37:39
【问题描述】:

我目前正在使用 JFace 为数据库插件功能开发 GUI(由于线程问题而无法使用任何其他方法),并且我的任务是使 GUI 看起来尽可能类似于数据库字段。我需要在文本字段内放置一个星号,如下所示:

我正在尝试使用 FieldDecorator 方法来执行此操作,但这会将星号放在文本字段之外。有没有办法让它在文本字段内绘制?

【问题讨论】:

    标签: java plugins swt jface


    【解决方案1】:

    您无法在控件中显示字段装饰。

    您可以做的是使用没有边框的Text 控件并将其放入有边框的Composite 中。装饰也可以在复合材料内。设置复合背景颜色以匹配文本将使事情看起来像你想要的。

    类似:

    Composite border = new Composite(composite, SWT.BORDER); 
    
    GridLayout layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    layout.marginRight = 8;  // Margin at right large enough for your decoration
    border.setLayout(layout);
    
    // Set border composite color to match Text background
    border.setBackground(border.getDisplay().getSystemColor(SWT.COLOR_WHITE));
    
    Text text = new Text(border, SWT.SINGLE);
    
    ControlDecoration dec = new ControlDecoration(text, SWT.RIGHT | SWT.TOP, border);
    
    dec.setImage(your image);
    dec.show();
    

    【讨论】:

    • 我确实读过这个,但是功能请求被设置为低优先级:当我重新实现它时,如果它有效,我会接受这个答案
    猜你喜欢
    • 2012-11-12
    • 1970-01-01
    • 2021-12-14
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多