草庐IT

java - Qt Jambi 与 SWT 的跨平台 GUI 开发

我目前正在参与一个主要为Linux(Fedora10)开发应用程序的项目。然而,稍后我们可能不得不将这些应用程序移植到MacOSX和Windows上,我们不想因为选择了错误的GUI工具包而陷入困境。*由于各种遗留原因,我们只能使用Java。我们正在决定是使用QtJambi还是SWT作为GUI。我在使用它们中的任何一个方面都没有太多经验,所以我正在做一些小原型(prototype)来尝试感受它们。到目前为止(只是在Linux上开发)它们之间没有太大区别。然而,我在短时间内所能达到的深度是有限度的。这就是我寻求帮助的原因。我们感兴趣的特殊功能是:无框窗自定义形状的窗口(即非矩形)美观有没有

java - 我如何继承系统的抗锯齿设置来像 swing 一样将文本绘制到屏幕外的图像上?

当我在Java6下运行我的swingGUI应用程序时,它们会自动为所有字体使用我配置的子像素抗锯齿设置。结果比标准AA选项有了很大改进。但是当我绘制图像时,我无法找到初始化图形上下文以使用系统的AA配置的方法。尝试使用Java的不同AA提示是一个失败的原因,因为没有一种子像素方法适用于所有用户。有没有什么方法可以为给定的图形上下文继承系统AA设置,而不必选择一个并显式设置提示?目前我必须使用GASPAA来避免标准AA给小字体带来的可怕结果。我试过不为文本AA设置任何内容,并且根本不设置任何AA提示。更新2010-01-05我想我已经确定了这一点;子像素AA提示似乎只有在直接绘制到AWT

java - SwingWorker 和 SwingUtilities.invokeLater 的区别

我需要在单独的线程中运行Swing应用程序中的某些方法。使用SwingWorker和SwingUtilities.invokeLater有什么区别。我应该使用哪个来在Swing应用程序中运行线程?我无法在教程中找到确切的信息,网址为http://java.sun.com/docs/books/tutorial/uiswing/concurrency/index.html 最佳答案 SwingUtilities.invokeLater如果您有必须在EDT中运行的内容,则使用它。如果您有一个长时间运行的任务,则需要使用SwingWork

java - 为什么我们的 Java 应用程序不在辅助监视器上显示窗口?

我们有一个已经存在多年的Java/Swing客户端。当我从XP移动到Vista(客户端仅在Windows上运行)时,我注意到每当在我的辅助监视器上创建一个新窗口(通常是JFrame后代)时,该窗口最初显示为空白,即不显示正常内容window,它只是一block灰色的实心block。如果我随后将该窗口拖到主显示器上,它会在第二个穿过显示器边界时正确绘制自己,然后我可以将它拖回辅助显示器。如果窗口是在主显示器上创建的,它总是完美地存在。我从来没有在XP上遇到过这个问题,只在Vista上遇到过。我无法在Windows7上轻松测试它,因为缺少双显示器Windows7机器。有人有任何想法吗?这可

java - 如何将按下 "enter"与单击按钮相关联?

在我的swing程序中,我有一个JTextField和一个JButton。我想,一旦用户按下“enter”键,JButton的actionListener就会运行。我该怎么做?提前致谢。 最佳答案 JRootPane有一个方法setDefaultButton(JButtonbutton)可以做你想做的事。如果您的应用程序是JFrame,它会实现RootPaneContainer接口(interface),您可以通过在JFrame上调用getRootPane()来获取根Pane,然后在返回的根Pane上调用setDefaultButt

java - 如何在java swing中添加笑脸?

我正在用javaswing开发一个聊天应用程序,我想在其中添加笑脸符号,有人可以帮我吗? 最佳答案 AutoreplacesmilestextwithappropriateimagesinJEditorPaneTosupporttheautoreplacingweneedaJEditorPanewithStyledEditorKit(orextensionclass)toprovideimagesintext.WejustaddaDocumentListenertoprocesstextinsertevents.Afterinser

java - 将事件传递给父级

我想创建一个应用程序,其中一些事件应该像被传递到父容器一样处理。例如,我有一个包含JLabel的JPanel。顶部的JPanel现在实现鼠标按下和拖动。我需要做什么,才能使事件看起来像是到达了JPanel而不是标签本身。(更改源对象很重要)有没有比实际实现事件并在父级中复制它们更好的解决方案?(在一些对象有>5个child之后,这会变得乏味)。 最佳答案 在您的事件监听器中,您可以将事件分派(dispatch)给父组件。作为myEvent事件处理函数参数:Componentsource=(Component)myEvent.getS

java - GUI 中监听器嵌套类的优点

有人告诉我,对于规模适中的项目,当您有扩展JPanel的类时,最佳做法是使用嵌套类来实现监听器。例如,我可以有一个扩展JPanel的FactoryScreen类,并有一个实现所有必要监听器的嵌套类FactoryScreenBrain。对于以这种方式封装我的类的特定优点或缺点,我从来没有得到很好的解释,直到现在,我一直只有扩展JPanel和实现监听器的类。有人可以为此提供一些指导吗? 最佳答案 为您的听众提供内部类可以使所有这些听众的目的非常明确。有时它还可以避免许多if检查,但会增加一些编码。如果你有面板publicclassMyP

java - Swingworker 实例未同时运行

我的电脑有4个内核,我正在运行一个Javaswinggui程序。当我运行我的应用程序时,它只使用两个内核和大约30%的CPU使用率。我有大量文件要处理,想将它们分成两个线程以使用更多CPU更快地完成此任务。我有一个名为PrepareTask的SwingWorker类,它有一个包含两个整数的构造函数:classPrepareTaskextendsSwingWorker{intstart,end;PrepareTask(intstart,intend){...}...publicVoiddoInBackground(){...}publicvoiddone(){...}我创建了两个这样的实

java - JTable 细胞监听器?

我正在使用JTable。每当一个单元格时,我都需要收到通知选择改变。我尝试使用ListSelectionListener但是我只在行选择更改时收到通知。如果我选择一个同一行上的新列,我没有收到通知。我需要知道什么时候选择单元格,而不是在更改单元格时。是否有我可以用来执行此操作的监听器? 最佳答案 执行此操作的最简单方法是调用setCellSelectionEnabled(true),并将对您的表的引用传递给监听器。调用监听器时,在原始表上调用getSelectedRow()和getSelectedColumn()。另一种方法是在表上