我遇到了一个Swing问题,该问题仅在计算机显示器关闭时出现,但我的Swing应用程序继续在后台运行。似乎每当显示器关闭时,Swing/AWT都会取消所有绘制操作,从而导致GUI中出现许多显示问题,一旦显示器重新打开,这些问题就会立即出现。例如,当我使用自定义JNI函数关闭监视器并随后打开一个简单的消息对话框时,当监视器重新打开时消息对话框是空白的:但它在下一次重绘后正确绘制:这是Swing的预期行为吗?有没有办法指示Swing继续在屏幕上绘图,即使显示器已关闭?编辑:这是一个SSCCE:packagetest;importjavax.swing.JOptionPane;importj
我已经为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_
我有以下SWT测试代码:publicstaticvoidmain(String[]args){shell=newShell();shell.setText(APP_NAME+""+APP_VERSION);shell.addShellListener(newShellListener(){publicvoidshellActivated(ShellEventevent){}publicvoidshellClosed(ShellEventevent){exit();}publicvoidshellDeactivated(ShellEventevent){}publicvoidshellD
在AWT应用程序中,我需要设置TextField的边框颜色。在JTextField中,我知道我们确实可以做到以下几点JTextFieldtf=newJTextField();tf.setBorder(BorderFactory.createLineBorder(Color.decode("#2C6791")));但是setBorder()方法在awtTextField中不可用。这个问题有什么解决方法吗? 最佳答案 如您所见,AWTTextField不支持边框。您可以通过将文本字段放在比文本字段稍大的Panel中并更改面板的背景颜色来
我有一个复合元素,它最初有一个标签。现在我在它(标签)上调用dispose并在同一个容器(复合榆树)中创建另一个标签,但我没有看到新文本。这让我想知道如何在合成上启用重绘,以便新标签(或我可能创建的任何其他组件)将呈现以代替旧标签。这是我的代码(分为单元测试以重绘复合Material)privateLabelcreateLabel(Compositeparent){Labellabel=newLabel(parent,SWT.NONE);label.setAlignment(SWT.CENTER);label.setLayoutData(newGridData(SWT.CENTER,S
我正在尝试从代码中单击按钮。我想做以下事情:classMyMouseAdapterextendsMouseAdapter{publicvoidmouseDown(MouseEventevt){System.out.println("Working!!!!");}}Buttonbutton=newButton();button.addMouseListener(newMyMouseAdapter());现在我想从代码中运行mouseDown方法,你能告诉我怎么做吗?谢谢。 最佳答案 你可以这样做:button.notifyListen
我可以使用SWTFileDialog选择文件夹而不是文件? 最佳答案 您可以使用DirectoryDialog反而。Here是一些示例代码:publicstaticvoidmain(String[]args){Displaydisplay=newDisplay();Shellshell=newShell(display);shell.open();DirectoryDialogdialog=newDirectoryDialog(shell);dialog.setFilterPath("c:\\");//Windowsspecific
您将如何在SWT表中显示大量行?巨大的是超过20K行,20列的东西。不要问我为什么要展示那么多数据,这不是重点。关键是如何让它尽可能快地工作,这样最终用户就不会厌倦等待。每行显示某个对象的实例,列是它的属性(一些)。我想使用JFace内容/标签提供程序模式,但担心它会比直接用数据访问表更慢。事情是这样的:Display.getDefault().asyncExec(newRunnable(){publicvoidrun(){Listobjects=model.getViewData();for(MyObjectobject:objects){TableItemitem=newTable
假设我有一个列=1的GridLayout组合。(类似于垂直流布局)我已将标签1、标签2、标签3添加到此组合中,它们将相应地出现。----------Label1|Label2|Label3|----------那么有没有可能,如果我将标签2的可见性设置为false,标签3是否可以向上移动以取代标签2?如果标签2的可见性设置回true,标签3会向下移动吗? 最佳答案 一个非常简单的解决方案可以使用GridData::exclude属性。例如,代码importorg.eclipse.swt.SWT;importorg.eclipse.s
编辑:如果有人还有任何其他提高屏幕捕获性能的建议,请随时分享,因为它可能会完全解决我的问题!各位开发者大家好,我正在为自己开发一些基本的屏幕捕获软件。截至目前,我已经获得了一些使用java.awt.Robot将屏幕捕获为BufferedImage的概念证明/修补代码。然后我在指定的时间内进行此捕获,然后将所有图片转储到磁盘。从我的测试中,我每秒获得大约17帧。试验#1时长:15秒捕获的图像:255试验#2时长:15秒捕获的图像:229显然,这对于真正的屏幕捕获应用程序来说还不够好。特别是因为这些捕获只是我在我的IDE中选择一些文本,而不是图形密集型的东西。我现在有两个类(class),