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 图形故障

Java后端总结

Qt5 应用程序中的 matplotlib RectangleSelector 图形故障

是啥导致我的 dojo GridX 出现奇怪的图形故障?

UICollectionView 重新加载数据导致图形故障

使用 ViewPager2 时 MapView/SupportMapFragment 图形故障