java图形化界面设置焦点_如何在更新窗口时防止Java图形程序窃取焦点?
在(嵌入式)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图形程序窃取焦点?相关推荐
- Java图形化界面编程
Java图形化界面编程(使用AWT) 文章目录 内容概述 容器Container Window Panel ScrollPane Box 布局管理器 FlowLayout ...
- java图形化界面(GUI)
java图形化界面(GUI) 一.AWT编程(抽象窗口工具集) 1.AWT继承体系 2.Container容器 2.1 Container继承体系 2.2 常见API 2.3 容器演示 2.3.1 w ...
- Java图形化界面设计——容器(JFrame)
Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...
- java 网格布局管理器,Java图形化界面设计——布局管理器之GridLayout(网格布局)...
网格布局特点: l 使容器中的各组件呈M行×N列的网格状分布. l 网格每列宽度相同,等于容器的宽度除以网格的列数. l 网格每行高度相同,等于容器的高度除以网格的行数. l 各组件的排列方式 ...
- JAVA图形化界面计算器
优秀的代码是它自己最好的文档.当你考虑要添加一个注释时,问问自己,"如何能改进这段代码,以让它不需要注释 我是一名在校大学生,这学期刚刚开JAVA课,老师上周留作业让做个计算器,最近一直在搞 ...
- Java 图形化界面设计(GUI)实战练习(代码)
关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...
- Java图形化界面GUI:初接触
简介 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面. JavaGUI核心技术: Swing,AWT: Jav ...
- java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题
在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...
- Java图形化界面编程之——AWT
目录 1.AWT简介 2.AWT继承体系 3.Container容器 3.1.Container继承体系 3.2.常用API 3.2.1.Component的常用方法 3.2.2.Container的 ...
最新文章
- linux下配置ip地址的方法
- ThreadLocal 中的ThreadLocalMap
- Kamp;R练习题6-1统计关键词出现的次数
- c++如何禁用指定的键盘布局_Karabiner Elements for Mac 键盘键位自定义改键工具
- python中的continue和break
- PL/SQL编程(1) - 存储过程,函数以及参数
- 公司欠薪,一定要书面督促或仲裁后,再离职
- java判断三个数字范围是否有交集_Python基础1之数字
- 如何在校外下载期刊全文应对大家工作后的资料搜寻
- 大数据学习入门到实战教程,精心整理万字长文入门第一章,老奶奶看了都说学会了
- 数据通信与计算机网络参考文献,通信工程论文参考文献
- 总结输入阻抗和输出阻抗
- pdf如何转换成word?分享三个好用的方法!
- 知识问答 - 名侦探柯南
- Android项目大全
- png图片与svg图片的转换----icon图标的制作
- python把http字符串转码https%3A%2F%2F转https://
- 你是如何变的自律的?
- 2019 年全国职业院校技能大赛GZ-2019032 大数据技术与应用(高职组)赛题库
- webstrom忽略文件夹建索引
热门文章
- python 计算过程图片_[Python图像处理]九.图像形态学相关运算
- Android开发之Android Studio 3.6新特性之获取控件id的高级方式ViewBinding
- 计算机管理将c盘分区,硬盘分区图文教程:新买的电脑只有一个C盘 如何再分区?...
- 好调剂的计算机类工科学校,B区最好调剂的5所工科院校,过线就能入选,性价比高,工科生可选...
- 03 php,PHP 03 选择结构
- Wine 4.3 发布,Windows 应用的兼容层
- linux下查询域名或IP注册信息的操作记录(whois)
- json字符串转java对象数组
- 利用 CocoaLumberjack 搭建自己的 Log 系统
- BOA+CGI+SQLite 随笔