草庐IT

java - Windows 上的 SWT : scroll control at cursor (not focused one)

我们正在将Swing应用程序转换为SWT,它已经可以使用了。真正让我抓狂的是,在Windows上使用SWT(与Swing相比)时,即使鼠标光标位于另一个控件上,也只会滚动焦点控件(例如表格、列表、多行文本字段)。是否有可能在我们的应用程序中更改此行为(不必安装第三方实用程序),例如通过为滚动事件安装一些独立于控件的钩子(Hook)/过滤器,将事件重定向到当前光标位置的控件,或者首先自动移动焦点。提前致谢。 最佳答案 原来的解决方案有很多问题。它应该使用反射(它自己提议)。它应该沿着小部件层次结构向上查找应该处理滚轮事件的父小部件,而

java - 结合 Aero Glass 效果和 SWT

作为一个宠物项目,我一直在研究将AeroGlass效果集成到我的SWT应用程序中的概念。ŁukaszMilewskihasanexcellentblogpost解释这是如何实现的,这几乎可以归结为:finalDisplaydisplay=newDisplay();finalShellshell=newShell(display);shell.setLayout(newFormLayout());finalMARGINSmargins=newMARGINS();margins.cyTopHeight=-1;finalCompositec=newComposite(shell,SWT.NO

windows - SWT 不再有句柄

WindowsXP对每个进程有10000个用户句柄的限制,每个桌面session的总用户句柄数为32000。但是,当我运行4或5个SWT进程时,每个进程消耗不超过2000个用户句柄,将始终抛出SWTNoMorehandles异常。有人知道为什么吗? 最佳答案 如果我没理解错的话,您可能遇到以下异常:org.eclipse.swt.SWTError:Nomorehandles您可能正在创建未正确处置的资源(例如Font、Image或GC对象)。您可能需要花点时间阅读ManagingOperatingSystemResources上的S

【UI编程】Java AWT/Swing/SWT/JavaFX杂谈

1.背景最近想做一个实用的小工具,能屏幕截图,录屏和录制课件,简单的图像处理,和制作gif表情包。翻出了很久以前用Javaawt/swing写的一个屏幕截图小程序,能运行,但是屏幕截图到剪贴板后,发现不能直接粘贴到网页,很纳闷。研究了半天,猜想是剪贴板上的BufferedImage格式不被网页识别,但如果贴到别的应用中,如word,QQ聊天中,又是可以的。不得已,切换到JavaFX提供的剪贴板功能,发现居然是可以的,看来JavaFX比swing更好用一点。于是决定将该程序移植到JavaFX框架上。问题缘起Java屏幕截图到剪贴板:Robotro=newRobot();Toolkittk=Too

java - 如何在我的 SWT 应用程序中检测 ctrl-f

我编写了一个SWTUI,它的主要功能是在StyledText控件中显示文本。我想为Ctrl+F添加一个处理程序,以便在按下该快捷方式时将焦点设置为搜索框。我尝试使用以下代码来检测按键。sWindow=newShell();...sWindow.getDisplay().addFilter(SWT.KeyDown,newListener(){@OverridepublicvoidhandleEvent(Evente){System.out.println("Filter-ctrl:"+SWT.CTRL);System.out.println("Filter-mask:"+e.stateM

java - 使用 Maven 构建多架构 SWT 应用程序

我已经为SWT应用程序设置了一个Maven项目。这个应用程序在几个平台上运行(OSX、Windows64位、Windows32位、Linux64位和Linux32位),我已经设置它以便在Maven运行和打包时检测到平台应用程序转到不同的目标目录。以下是pom.xml中实现此目的的相关部分:linux_x86_64linuxamd64${project.basedir}/target/${project.version}/linux_x86_64win32_x86_64linuxi386${project.basedir}/target/${project.version}/win32_

java - 如何让我的基本 SWT 应用程序在 Mac OS X 10.5.6 中正确退出?

我有以下SWT测试代码:publicstaticvoidmain(String[]args){shell=newShell();shell.setText(APP_NAME+""+APP_VERSION);shell.addShellListener(newShellListener(){publicvoidshellActivated(ShellEventevent){}publicvoidshellClosed(ShellEventevent){exit();}publicvoidshellDeactivated(ShellEventevent){}publicvoidshellD

java - SWT 复合 - 重绘问题

我有一个复合元素,它最初有一个标签。现在我在它(标签)上调用dispose并在同一个容器(复合榆树)中创建另一个标签,但我没有看到新文本。这让我想知道如何在合成上启用重绘,以便新标签(或我可能创建的任何其他组件)将呈现以代替旧标签。这是我的代码(分为单元测试以重绘复合Material)privateLabelcreateLabel(Compositeparent){Labellabel=newLabel(parent,SWT.NONE);label.setAlignment(SWT.CENTER);label.setLayoutData(newGridData(SWT.CENTER,S

java - org.eclipse.swt.widgets.Button 点击​​代码

我正在尝试从代码中单击按钮。我想做以下事情:classMyMouseAdapterextendsMouseAdapter{publicvoidmouseDown(MouseEventevt){System.out.println("Working!!!!");}}Buttonbutton=newButton();button.addMouseListener(newMyMouseAdapter());现在我想从代码中运行mouseDown方法,你能告诉我怎么做吗?谢谢。 最佳答案 你可以这样做:button.notifyListen

java - SWT 文件对话框 : Selecting directories instead of files

我可以使用SWTFileDialog选择文件夹而不是文件? 最佳答案 您可以使用DirectoryDialog反而。Here是一些示例代码:publicstaticvoidmain(String[]args){Displaydisplay=newDisplay();Shellshell=newShell(display);shell.open();DirectoryDialogdialog=newDirectoryDialog(shell);dialog.setFilterPath("c:\\");//Windowsspecific