标签: jface

具有可变行高的SWT表:适用于Linux,但不适用于Mac/Windows

问题:我需要一个具有可变行高的SWT表(JFace TableViewer).事实上,我在我的开发机器(运行Ubuntu 10.10)上解决了这个问题.不幸的是,这在Windows和Mac上都不起作用.

最初,我以为我没有正确使用这些库.但到现在为止,我担心我想要做的事情在Windows上根本不可能.我希望有人能说服我.

重现:我没有在这里提供我的代码,而是构建了一个简单的程序来重现问题.我从以下Snipplet开始:

http://git.eclipse.org/c/platform/eclipse.platform.ui.git/tree/examples/org.eclipse.jface.snippets/Eclipse%20JFace%20Snippets/org/eclipse/jface/snippets/viewers/ Snippet049StyledCellLabelProvider.java

我修改了update()方法,为目录生成两行文本,为文件生成一行(模拟具有可变行高的环境):

...
if (file.isDirectory()) {
    cell.setText(styledString.toString() + "\n"
        + styledString.toString());
    cell.setImage(IMAGE1);
} else {
    cell.setImage(IMAGE2);
}
...

这在Linux上可以正常工作,但在Windows上,所有行都具有相同的高度.具体来说,只能看到一行.

接下来,我试图通过使measure()更加智能来帮助SWT.所以我重写了measure(),如下所示:

protected void measure(Event event, Object element) {
    if (((File) element).isDirectory()) {
        event.height = 32;
    } else {
        event.height = 16;
    }
    super.measure(event, element);
}

结果:所有行都具有高度32.再次,这在Linux上按预期工作.

我担心,在Windows上,所有行都必须是相同的高度.这对我来说是一个显而易见的事.任何人都可以证实这一点,甚至更好,提供一种解决方法吗?

谢谢!

java swt jface

6
推荐指数
1
解决办法
4746
查看次数

tableviewer与图像的奇怪对齐和布局

我使用TableViewer两列.第一个应该包含文本,第二个应该包含取决于对象状态的图像.标签提供程序是一个扩展LabelProvider和实现的自定义提供程序ITableLayoutProvider.

如果未显示图像,则布局正确,第一列中的文本与左侧对齐. 正确

但是当显示至少一个图像时,第一列中的文本在右侧和中间之间的某处对齐 - 看起来有点难看.

不正确

布局很简单:

availableDevicesList = new TableViewer(this, SWT.SINGLE | SWT.BORDER
| SWT.FULL_SELECTION);
availableDevicesList.setContentProvider(new ArrayContentProvider());

Table table = availableDevicesList.getTable();
TableLayout tableLayout = new TableLayout();
table.setLayout(tableLayout);

table.setLinesVisible(true);

tableLayout.addColumnData(new ColumnWeightData(3));
new TableColumn(table, SWT.LEFT);
tableLayout.addColumnData(new ColumnWeightData(1));
new TableColumn(table, SWT.RIGHT);
Run Code Online (Sandbox Code Playgroud)

是什么导致这个问题?

swt jface image alignment tableviewer

6
推荐指数
1
解决办法
1540
查看次数

如何为Eclipse PDE安装source/javadoc?

我已经通过http://download.eclipse.org/releases/juno更新站点在Eclipse 3.8上安装了插件开发环境 .现在,在"插件依赖关系"树下的PDE项目中,我看到所有PDE JAR都将源集连接到相同的JAR.然而,JAR不包含任何源 - 仅包含类文件.

因此,我看不到PDE/JFace类的Javadoc,并且为自动生成的代码获得了难看的arg0,arg1等.

我在哪里以及如何获得PDE/JFace的源代码或Javadoc?

eclipse eclipse-plugin jface

6
推荐指数
2
解决办法
2394
查看次数

正确使用Eclipse 4中的ProgressMonitorDialog

我有一组API来执行文件操作,例如 saveToFile(CustomObject objectToSave);

由于文件操作可能很长,我决定应该向用户显示某些指示,例如进度条.

我读了一下ProgressMonitorDialog,所以我尝试了,但它并不完全正常,因为我需要(或者更好,我不知道如何正确使用它).

目前我这样做:

ProgressMonitorDialog progressDialog = new ProgressMonitorDialog(theShell);  
    try {  
        progressDialog.run(false, true, new IRunnableWithProgress() {  

        @Override  
        public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {  
            monitor.beginTask("Saving your data", 100);  
            try {  
                Utils.saveToFile(objectToSave);  
            } catch (Exception e) {  
            // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
            monitor.done();   
        }  
     });   
Run Code Online (Sandbox Code Playgroud)

这段代码非常快速地显示了一个进度对话框,但问题是在较慢的PC上这会堆叠直到Utils.saveToFile返回,而我不知道如何在保存完成之前指示中间进程.

我找到了一个提到的线程,IProgressMonitor.UNKNOWN但它没有说明在monitor期间发生的事情performRead(_fileName, monitor);

我该如何解决这个问题?

java eclipse swt jface eclipse-rcp

6
推荐指数
1
解决办法
1万
查看次数

如何使TreeViewer单元格的一部分变为粗体?

我目前想要编写一个基于JFace的Eclipse编辑器TreeViewer.我添加了一个CellLabelProviderTreeViewer.如果我直接在粗体字体的update方法中设置单元格的CellLabelProvider字体,则标签显示为粗体.

但我只希望标签的一部分显示为粗体.所以我将StyleRanges应用于单元格.'StyleRange的选定颜色完美无缺,但将a的字体设置StyleRange为粗体,似乎不起作用.

为什么这样,我该如何解决?

java swt jface

6
推荐指数
2
解决办法
2173
查看次数

如何使用rcp和swt/jface组件通过按钮单击在标签中动态添加图像

按钮单击以打开FileDialog Box并选择要在特定标签上显示的任何图像.

我尝试使用Label控件中的选定图像设置绝对路径或相对路径,但不能动态正常工作.

所以请帮我解决问题.

swt filedialog jface eclipse-rcp

6
推荐指数
1
解决办法
574
查看次数

SWT Text小部件:如何将自己的MenuItems插入默认上下文菜单?

org.eclipse.swt.widgets.Text类的默认上下文菜单非常丰富,包含了用户依赖的功能......

默认文本上下文菜单,Mac版

但是,只要我使用Control.setMenu()分配我自己的上下文菜单,所有这些丰富性就会消失.有没有将自己的MenuItem对象到这个系统创建菜单的方式.我可以有我的蛋糕吃吗?

你的线索总是非常受欢迎.

M.

swt jface eclipse-rcp

5
推荐指数
1
解决办法
1152
查看次数

可滚动复合 - 自动调整大小 - swt

我有一个使用Scrollable Composite的应用程序窗口.

在可滚动的复合内部,我们可以有N个复合(相应的数据库数据).

我怎样才能检测到儿童复合材料的大小来设置正确的高度?

/**
 * Create contents of the application window.
 * @param parent
 */
@Override
protected Control createContents(Composite parent) {

    final ScrolledComposite sc = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.BORDER);
    final Composite containerEditarAtendimento = new Composite(sc, SWT.BORDER);
    containerEditarAtendimento.setSize(800, 630);
    sc.setContent(containerEditarAtendimento);
    sc.setExpandHorizontal(true);
    sc.setExpandVertical(true);
    sc.setMinSize(containerEditarAtendimento.computeSize(820, 480));
    GridLayout gridLayout = new GridLayout(1, false);
    gridLayout.marginTop = 5;
    gridLayout.marginRight = 5;
    gridLayout.marginBottom = 5;
    gridLayout.marginLeft = 5;  
    containerEditarAtendimento.setLayout(gridLayout);
    { // Composite com as informações de atendimento.
        EditarAtendimentoComposite editarAtendimentoComposite = new EditarAtendimentoComposite(containerEditarAtendimento, SWT.BORDER);
        GridData gd_editarAtendimentoComposite …
Run Code Online (Sandbox Code Playgroud)

java swt jface eclipse-rcp

5
推荐指数
1
解决办法
9476
查看次数

突出显示时更改SWT树节点文本前景

我在SWT / JFace技术方面还很陌生,但发现了一个令我抓狂的问题。在Eclipse RCP应用程序中,我有一个视图,其中放置了带有JFace TreeViewer的SWT树,该JFace TreeViewer通过标签提供程序提供标签和图标。根据客户的要求,树的背景颜色为深蓝色,字体颜色为白色。当选择了节点时,这种颜色组合会导致节点文本的可视化效果不佳,文本不适合树形区域,并且我们将鼠标指针放在节点上。以某种方式出现“本机突出显示”。可以在下图中显示。

在此处输入图片说明

另一方面,当未选择将鼠标放在其上的节点时,不会发生此问题。突出显示会更改字体的颜色以使其更加可见。可以在下图中显示。

在此处输入图片说明

经过一些研究,我发现通过为SWT.EraseItem事件添加侦听器,我可以修改所选节点的背景颜色,然后禁用选择。这使我可以定义自己的选择背景样式,还可以禁用的SWT.SELECTED标记,以event.detail在未选择节点时强制OS突出显示。

private final class EraseItemListener implements Listener {

    public void handleEvent(Event event) {
        // Only perform the node highlight when it is selected.
        if ((event.detail & SWT.SELECTED) == SWT.SELECTED) {
            // Modify background, emulate Windows highlighting.

            ...

            // Set Windows that we do not want to draw this item as a selection (we have already highlighted the item in our way).
            event.detail &= ~SWT.SELECTED;
        } …
Run Code Online (Sandbox Code Playgroud)

java swt jface treeviewer

5
推荐指数
1
解决办法
1496
查看次数

SWT Shell KeyListener

1.)目标

OSX的文件快速预览小部件.基本上,在Mac上,当您选择文件并按空格键时,您可以快速预览该文件.我正在尝试使用SWT + JFace(mmmaybe JavaFX)复制该功能.

Shell对我来说很合适.

Mac快速预览截图


2.)具体细节

  • 预览小部件将APPLICATION_MODAL Shell附加到StructuredViewer.

  • Shell每次打开预览时我都不想重新创建.我只想隐藏它.这应该是一个快速预览.

  • 我希望能够关闭这个ShellESCSPACE.

  • 我处理许多类型的文件(PDF,JPEG,PNG,TXT等),因此每个文件都有自己的预览组件.该Shell知道如何将这些组件之间进行切换.

  • 此组件可能无法修改任何文件,只需预览它们即可.我用来构建预览的组件是另一个故事.


3.)问题

  • 由于Shell有直接的孩子,这些孩子可能会"偷"焦点并抓住KeyEvents.因此,Shell不知道如何关闭键盘事件.

  • 我不想添加Display过滤器.每次显示/隐藏时,我都必须添加/删除它们Shell.另外,这些是非常危险的,因为它是一个巨大的RCP应用程序,它可能会影响其他工作台部件(如果由于某种原因没有删除过滤器).


4.)SSCCE

在下面的示例中,您可以观察到一旦Text具有焦点,Shell就无法抓回焦点,并且不会再将键事件泵入其中.

/**
 * 
 * @author ggrec
 *
 */
public class SSCCE_ShellWithShellParent
{

    // ==================== 1. Static Fields ========================

    private static final int CHILD_SHELL_STYLE = SWT.BORDER | SWT.RESIZE | SWT.TITLE | …
Run Code Online (Sandbox Code Playgroud)

java swt javafx jface eclipse-rcp

5
推荐指数
1
解决办法
1554
查看次数