热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用IntelHD3700linux的Java8Swing渲染问题

如何解决《使用IntelHD3700linux的Java8Swing渲染问题》经验,请帮忙看看怎么搞?

我在Kubuntu 18.04的Java 8 update 181中开发了一个应用程序.在我的开发PC中,我使用英特尔i3-6100和英特尔®高清显卡530.所有图形都是使用swing完成的,使用这种硬件配置,一切都可以正常工作.

在生产PC上,我使用英特尔(R)Celeron(R)CPU J1900,采用英特尔®高清显卡,适用于英特尔凌动®处理器Z3700系列.使用相同的操作系统和java版本运行相同的操作我发现我的图形在摇摆中完成了问题.

    摇摆组件,如jLabels,jButton等,不更新.例如,框架A的标签B带有文本"旧文本",我用文本"新文本"更新标签B上的文本,然后我将setVisible(true)调用到框架A,框架变为可见文本"旧"文本".这不是每次都发生,有时它会更新,有时我不会.这仍然发生在我添加SwingUtilities与我的解决方案不同的事件中,如下所述.

    在标签中,我的.gif动画运行不顺畅,或者它们冻结了.

    交换活动帧(在第二个上显示为真,在第一个上为false)有一些延迟.

    经过一段时间后,GUI应用程序冻结并在一段时间后继续工作,有时几分钟后,有时几秒钟后.

因此,在许多论坛上搜索后,我对我的应用程序进行了以下更改

    开始使用SwingUtilities.invokeLater()或SwingUtilities.invokeAndWait()(我想在显示它之前更改某些内容,例如,如果服务的价格是80.00更新然后显示它)我到处更新我的GUI组件.

    在组件的每次更新之后,我调用component.revalidate()和component.repaint()或repaint(50).

    每次调用frame.setVisible(status)时,我都会等待来自windowListener的信号,即激活和打开帧,或者取消激活和关闭,具体取决于调用true或false作为状态.

    在仍然遇到没有更新摆动组件的问题之后,我尝试将框架设置为可见而不是更新其所有组件.这在开始的一段时间内工作正常,但过了一段时间后我注意到有时组件不会更新.这是一个丑陋的解决方法,有时会起作用,因为当框架可见时,您可以看到内容在框架上发生变化.

    我读到英特尔HD 3000系列上的图形硬件加速存在问题,所以在某些论坛上,我读到我应该使用VM选项-Dsun.java2d.d3d = false和-Dsun.java2d.opengl = True调用我的应用程序.这样,图形有点平滑,但在12到24小时之后的一段时间(不完美)之后,图形会冻结约5分钟,而不是更新任何东西.

    在一些论坛上,我看到用户通过从java 8降级到java 7来解决了这个问题(这需要修改我的代码和我同事的其他代码,我估计至少2个月),在某些论坛上,我看到降级到java 8更新25有助于解决此问题.我尝试降级到java 8更新25并且图形和动画开始变得更顺畅,但是在一段时间(最后一次24小时)之后,应用程序开始冻结.

    我检查我的操作系统有最新版本的英特尔高清显卡,并有OpenGL 3.0版Mesa 18.0.5.

另外,我看到了很多关于在Intel HD上用java 8运行的游戏Minecraft的问题.

我对java GUI没有太多经验,但我不明白它如何与一个Intel HD图形精细配合,而其他没有.写一次运行任何地方的java概念这次失败了.

//编辑2018-11-02最后我的mini pci-e到pci-e卡到达了我在aliexpress上订购的,但图形仍然出现故障.不知道下一步该尝试什么.我想所有的图形渲染都是由处理器完成的,而不是我的nvidia卡或intel hd图形.


推荐阅读
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
author-avatar
ftwinkle
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有