Tag: jface

JFace为SWT添加了什么?

以下是有什么区别的: TreeViewer&Tree TableViewer和表 TreeViewerColumn&TreeColumn TableViewerColumn和TableColumn 何时使用查看器和常规小部件? PS:如果你能帮助我找到理解他们的好资源,那将是一个很大的帮助。谢谢!

在SWT / JFace RCP应用程序中填充巨大的表

你会如何在SWT表中显示大量的行? 巨大的是20K行,20列。 不要问我为什么需要显示那么多数据,这不是重点。 关键是如何让它尽可能快地工作,以便最终用户不会感到无聊等待。 每行显示一些对象的实例,列是其属性(一些)。 我想使用JFace内容/标签提供者模式,但担心它会比直接用数据命中表更慢。 这是怎么回事: Display.getDefault().asyncExec(new Runnable() { public void run() { List objects = model.getViewData(); for(MyObject object: objects){ TableItem item = new TableItem(table, SWT.NULL); item.setImage(0, img1); item.setBackground(color1); item.setText(0, object.getProperty0()); item.setText(1, object.getProperty1()); item.setText(2, object.getProperty2()); ….. } }); 在我的计算机上绘制20k记录大约需要20秒。 我在Windows中看到的最大的性能问题是由新建表项创建和填充文本时由SWT发送的大量本机窗口消息引起的。 我找到了很好的解决方法 – 在填充之前隐藏表,然后在完成后显示它。 只需在循环之前调用table.setVisible(false),在循环之后调用table.setVisible(true)就会出现奇迹 – 速度上升六到七次! 我想加快速度。 你会建议什么? 另外,我想知道隐藏小部件的这个技巧如何在SWT(又称Linux)的非Windows实现上起作用?

jface.preference.FileFieldEditor无法指定新文件

我在Eclipse(3.5.2)应用程序中设置了一系列首选项,我遇到了FileFieldEditor的问题。 我想允许用户指定一个日志文件来打印输出。 通常,这将是一个新文件。 但是当我使用FileFieldEditor的文件选择对话框时,它会抱怨该文件不存在(“Value必须是现有文件”)。 有没有办法在没有扩展FileFieldEditor类的情况下抑制此错误并让Java创建该文件(如果它不存在)? 谢谢!

SWT事件传播

我正在尝试检测包含许多其他复合材料的Composite控件上的单击事件。 我试过了: topComposite.addMouseListener(new MouseListener() { … @Override public void mouseUp(MouseEvent arg0) { logger.info(“HERE”); }); }); 但事件永远不会发生。 我假设当一个孩子发生鼠标事件时它会向上传播,但这不会发生。 我该怎么做呢?

使用Java的文件资源管理器 – 如何去做?

我将设置使用Java创建文件资源管理器。 目的是尽可能地模拟默认资源管理器的行为,无论底层操作系统是什么。 我在Java中没有做过GUI编程。 我查找了Swing,SWT和JFace,我正在使用本教程开始我的项目: http : //www.ibm.com/developerworks/opensource/library/os-ecgui1/ 我想知道您对解决这个问题的最佳方法的看法。 如果您可以评论编码的复杂性,可移植性和操作系统独立性以及效率,那就太棒了。 还有什么我应该知道的吗? 还有其他方法吗? 非常感谢! 感谢您的回答和回复。 看起来我会选择Swing来实现文件浏览器。 是什么给了我毛骨悚然的想法,没有什么可以模仿默认的资源管理器视图…你能提供一些关于它的指示吗? 我是否获取文件列表,获取图标,然后在屏幕上以网格方式排列它们以显示默认的资源管理器视图?

可以将HTML样式链接添加到SWT StyledText吗?

我知道SWT有一个Link类来创建HTML一个href样式链接作为小部件,但我试图找到一种方法来使StyledText控件中的某些文本出现并作为一个链接。 我觉得Eclipse会在代码编辑器中执行此操作,如果您按住控件并将鼠标hover在方法名称上,但我知道Eclipse java编辑器比StyledText控件复杂得多。

非模态JFace对话?

简单地说:有没有办法创建非模态JFace对话框? 我试过调用setShellStyle无济于事。 如果我没记错,这不是摆动的问题 – 这是SWT的缺点,还是我只是滥用了小部件? TIA

SWT表:自动调整所有列的大小

Qt解决方案是对resizeColumnsToContent()的单个调用,在.NET中可以使用TextRenderer.MeasureText() ,JTable可以使用AUTO_RESIZE_ALL_COLUMNS 。 在SWT中,有没有一种方法可以在填充列后对程序集进行大小调整? 调用computeSize(SWT.DEFAULT, SWT.DEFAULT)返回相同的值,从而忽略列中剩余的字符。 TableColumn有setWidth() ,但是如何在考虑字体setWidth()获取当前内容的大小提示?

Eclipse RCP – ILazyTreeContentProvider实现意外地渴望

我正在开发一个Eclipse RCP应用程序,并且我正在尝试使用ILazyTreeContentProvider实现,以便在特定时间仅显示可见项。 代码: 在扩展ViewPart的类中: public void createPartControl(Composite parent) { viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.VIRTUAL); drillDownAdapter = new DrillDownAdapter(viewer); viewer.setContentProvider(new ViewContentProvider()); viewer.setLabelProvider(new ViewLabelProvider()); //viewer.setSorter(new NameSorter()); viewer.setInput(getViewSite()); // Create the help context id for the viewer’s control PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), “test.provider.lazy.viewer”); makeActions(); hookContextMenu(); hookDoubleClickAction(); contributeToActionBars(); } 在ContentProvider中: @Override public void updateElement(Object parent, int […]

ElementListSelectionDialog没有元素

我正在尝试使用ElementListSelectionDialog 。 我遵循了示例代码,但无论出于何种原因,对话框显示但没有选项 我的代码: ElementListSelectionDialog dialog = new ElementListSelectionDialog(shlSpriteCreator, new LabelProvider()); dialog.setMultipleSelection(false); dialog.setIgnoreCase(true); dialog.setAllowDuplicates(true); dialog.setMessage(“Select an AI”); dialog.setTitle(“What AI to use?”); dialog.setElements(new String[]{“HELLO”,”GOODBYE”}); if (dialog.open() == Window.OK) { aiControllerLocation = (String) dialog.getFirstResult(); } 生成的对话框: 我最初使用了一个类数组,但由于它不起作用,我替换了一个简单的字符串列表,虽然我理解它使用LabelProvider类我应该能够使用任何对象,它将显示它的toString()表示。