Java Swing 图形故障?
Posted
技术标签:
【中文标题】Java Swing 图形故障?【英文标题】:Java Swing graphics glitch? 【发布时间】:2014-07-09 22:34:44 【问题描述】:Image of the glitch
我通过复制教科书中的示例来学习 Java,一旦我开始使用 GUI 类,我就遇到了一些奇怪的故障,如果这是正确的术语的话。正如您在图像上看到的,部分文本丢失。
生成此对话框的代码也不复杂:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;
public class InnerClassTest
public static void main(String[] args)
TalkingClock clock = new TalkingClock(1000, true);
clock.start();
// keep program running until user selects "OK"
JOptionPane.showMessageDialog(null, "Quit program?");
System.exit(0);
class TalkingClock
/*
* COnstructs a talking clock
* @param interval the interval between messages (in milliseconds)
* @param beep true if the clock should beep
*/
public TalkingClock(int interval, boolean beep)
this.interval = interval;
this.beep = beep;
/*
* Start the clock.
*/
public void start()
ActionListener listener = new TimePrinter();
Timer t = new Timer(interval, listener);
t.start();
private int interval;
private boolean beep;
class TimePrinter implements ActionListener
@Override public void actionPerformed(ActionEvent event)
Date now = new Date();
System.out.println("At the tone, the time is " + now);
if (beep) Toolkit.getDefaultToolkit().beep();
当我打开 Java“控制面板”时,我遇到了类似的故障。查看this image 上的Java 图标。 (这里也少了一段文字。当前标签的标题应该是“Uppdatera”)
我在任何其他应用程序中都没有遇到此问题,并且我正在运行最新版本的 Java 平台以及适用于我的 Nvidia GeForce GT 630M 的最新可用驱动程序。
您对我可以尝试解决的问题有什么建议吗?
【问题讨论】:
在 Event Dispatching Thread 的上下文中启动您的 UI 代码,有关详细信息,请参阅 initial threads 我好像记得显卡有问题,....但不记得细节了。 这可能反映了在安装时为 Windows 和 Java 选择的位置不匹配。 你能发布你的代码,你是如何开始你的摇摆应用程序的吗?原因是 swing 不是线程安全的,您可以查看本页底部的详细信息docs.oracle.com/javase/7/docs/api/javax/swing/… @pathfinder2104:这个问题与 Swing 线程无关。我知道的100%。它可能更多地处理外观和图形卡。 【参考方案1】:我遇到了这个问题,但我已经解决了! 我所做的只是在看了这个页面之后,我决定检查我的显卡设置,我意识到这一点 -
https://www.youtube.com/watch?v=UWu3dyXlbAM
检查我所做的。我所做的只是转到“管理 3d 设置”,然后单击“查找”并添加“Java 1.8.0_25 ....”并将其设置为使用 nVidia 高性能处理器。我想新的 Java 只需要一个提示来使用好的图形:D。
【讨论】:
谢谢,这实际上是有帮助的。一直以来,我都以为我的 NVidial 显卡有问题,但实际问题出在英特尔集成显卡上。我已将首选图形处理器设置为“高性能 NVIDIA 处理器”(在 NVidia 控制面板 -> 管理 3d 设置;程序设置 -> 添加 -> Java),Java UI 现在可以正常工作了。【参考方案2】:我和你有同样的问题,我终于找到了解决方法。
就像其他人评论的那样,这是我的显卡驱动程序有问题(我有一个 NVIDIA GeForce GT 640M)。我一开始以为不是因为我有最新的驱动程序,所以我尝试重新安装 Java,但没有成功。最终我回滚了我的图形驱动程序(控制面板->设备管理器->显示适配器->(您的显卡名称)->驱动程序(选项卡)->回滚驱动程序(按钮)),这解决了问题。我尝试更新到较新的版本,但问题又出现了,所以肯定是较新的驱动程序导致了问题。
【讨论】:
【参考方案3】:禁用显卡上的抗锯齿或 FXAA ;)
【讨论】:
【参考方案4】:好的,这是经过数小时研究后的简短回答,我希望它可以帮助其他人不要碰壁:尝试禁用对 Java.exe 的屏幕显示支持(通过将其添加到列表中) RivaTuner 统计服务器(如果它在您的计算机上运行)。
在我的电脑上这样做会立即使问题消失。
【讨论】:
以上是关于Java Swing 图形故障?的主要内容,如果未能解决你的问题,请参考以下文章
UITableView reloadRowsAtIndexPaths 图形故障