在(嵌入式)Ubuntu 12.04系统上,我们有一个简单的

Java程序,它在窗口上显示一些图形模式,每秒钟更新一次.我们用它来监控系统上运行的一些进程.问题在于,虽然它是活动的而不是最小化的,但只要窗口更新,它就会窃取焦点.这使得无法使用开放式终端窗口.

运行应用程序表单命令行或从Eclipse IDE时,行为是相同的.

在NetBeans IDE下运行时,Windows 7上不会出现同样的问题.

我们如何防止Java应用程序将重点放在Ubuntu机器上?

更新1:发现这个问题似乎很难解决同样的问题:

How do I stop/workaround Java apps stealing focus in Linux window managers

阅读它,我了解到问题是使用JFrame作为容器,这是我们使用的.他们的解决方案是使用JWindow容器而不是JFrame容器.然而,寻找差异,JWindow是“赤裸裸”,并没有表现得像一个“真正的”窗口,因为没有装饰.有没有办法在JFrame中使用JWindow,从而消除焦点窃取?

更新2:尝试在PC上的Ubuntu虚拟机上运行此程序会产生同样的错误行为.这表明Windows 7和Linux的Java运行时存在差异,并且该问题并非特定于嵌入式Linux.

更新3:这是一个SSCCE:

//package SSCCE;

import java.awt.*;

import java.awt.geom.*;

import javax.swing.*;

public class MonitorSSCCE extends JFrame{

public static void main(String[] args)

{

// Set the frame

JFrame ecoreFrame = new JFrame("SSCCE");

ecoreFrame.setSize(120, 120);

ecoreFrame.setVisible(true);

// Refresh frame every 200 msec

while (true) {

GRFX grfx = new GRFX();

ecoreFrame.add(grfx);

ecoreFrame.setVisible(true);

grfx = null;

try {

Thread.sleep(200);

} catch (InterruptedException e) {

}

}

}

static int clr = 0;

public static class GRFX extends JPanel {

public void paintComponent(Graphics comp) {

Graphics2D comp2D = (Graphics2D) comp;

// Draw a changin color rectangle

comp2D.setColor(new Color(clr, 0, 0));

Rectangle2D.Double rect = new Rectangle2D.Double(10, 10, 100, 100);

comp2D.fill(rect);

clr = clr + 10;

if (clr > 255)

clr = 0;

}

}

}

更新4:在准备SSCCE时,我有一些阅读并了解JFrame对象的大量窗口刷新方法.碰巧问题是while循环中的setVisible()调用.解决方案是用repaint()方法替换它.

java图形化界面设置焦点_如何在更新窗口时防止Java图形程序窃取焦点?相关推荐

  1. Java图形化界面编程

    Java图形化界面编程(使用AWT) 文章目录  内容概述  容器Container   Window   Panel   ScrollPane   Box  布局管理器   FlowLayout   ...

  2. java图形化界面(GUI)

    java图形化界面(GUI) 一.AWT编程(抽象窗口工具集) 1.AWT继承体系 2.Container容器 2.1 Container继承体系 2.2 常见API 2.3 容器演示 2.3.1 w ...

  3. Java图形化界面设计——容器(JFrame)

    Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

  4. java 网格布局管理器,Java图形化界面设计——布局管理器之GridLayout(网格布局)...

    网格布局特点: l  使容器中的各组件呈M行×N列的网格状分布. l  网格每列宽度相同,等于容器的宽度除以网格的列数. l  网格每行高度相同,等于容器的高度除以网格的行数. l  各组件的排列方式 ...

  5. JAVA图形化界面计算器

    优秀的代码是它自己最好的文档.当你考虑要添加一个注释时,问问自己,"如何能改进这段代码,以让它不需要注释 我是一名在校大学生,这学期刚刚开JAVA课,老师上周留作业让做个计算器,最近一直在搞 ...

  6. Java 图形化界面设计(GUI)实战练习(代码)

    关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...

  7. Java图形化界面GUI:初接触

    简介 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面. JavaGUI核心技术: Swing,AWT: Jav ...

  8. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题

    在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...

  9. Java图形化界面编程之——AWT

    目录 1.AWT简介 2.AWT继承体系 3.Container容器 3.1.Container继承体系 3.2.常用API 3.2.1.Component的常用方法 3.2.2.Container的 ...

最新文章

  1. linux下配置ip地址的方法
  2. ThreadLocal 中的ThreadLocalMap
  3. Kamp;R练习题6-1统计关键词出现的次数
  4. c++如何禁用指定的键盘布局_Karabiner Elements for Mac 键盘键位自定义改键工具
  5. python中的continue和break
  6. PL/SQL编程(1) - 存储过程,函数以及参数
  7. 公司欠薪,一定要书面督促或仲裁后,再离职
  8. java判断三个数字范围是否有交集_Python基础1之数字
  9. 如何在校外下载期刊全文应对大家工作后的资料搜寻
  10. 大数据学习入门到实战教程,精心整理万字长文入门第一章,老奶奶看了都说学会了
  11. 数据通信与计算机网络参考文献,通信工程论文参考文献
  12. 总结输入阻抗和输出阻抗
  13. pdf如何转换成word?分享三个好用的方法!
  14. 知识问答 - 名侦探柯南
  15. Android项目大全
  16. png图片与svg图片的转换----icon图标的制作
  17. python把http字符串转码https%3A%2F%2F转https://
  18. 你是如何变的自律的?
  19. 2019 年全国职业院校技能大赛GZ-2019032 大数据技术与应用(高职组)赛题库
  20. webstrom忽略文件夹建索引

热门文章

  1. python 计算过程图片_[Python图像处理]九.图像形态学相关运算
  2. Android开发之Android Studio 3.6新特性之获取控件id的高级方式ViewBinding
  3. 计算机管理将c盘分区,硬盘分区图文教程:新买的电脑只有一个C盘 如何再分区?...
  4. 好调剂的计算机类工科学校,B区最好调剂的5所工科院校,过线就能入选,性价比高,工科生可选...
  5. 03 php,PHP 03 选择结构
  6. Wine 4.3 发布,Windows 应用的兼容层
  7. linux下查询域名或IP注册信息的操作记录(whois)
  8. json字符串转java对象数组
  9. 利用 CocoaLumberjack 搭建自己的 Log 系统
  10. BOA+CGI+SQLite 随笔