首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpad的JTextField问题

Numpad的JTextField问题
EN

Stack Overflow用户
提问于 2012-07-10 17:20:12
回答 5查看 1.5K关注 0票数 22

最近,我遇到了一个与JTextField有关的奇怪问题。当我运行以下代码(参见下面的代码)时,在文本字段中键入"0“首先发送一个粘贴操作,然后键入"0”。例如,如果将"text“复制到剪贴板,则在我键入"0”时键入"text0“。类似地,键入"4“将前面的字符替换为"4”(我猜这是一个delete操作,然后键入"4“)。键入"7“在输入"7”之前清除文本字段。

以下是代码:

代码语言:javascript
复制
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Main {

public static void main(String[] args) {
    JFrame frame = new JFrame();
    JTextField text = new JTextField();
    frame.add(text);
    frame.setSize(500, 500);
    frame.setVisible(true);
}

}

这个问题发生在Red上(通过Windows使用VNC访问);在Windows上一切都按预期运行。

更新:Ubuntu上的程序也没有问题。我还试过使用不同的键盘和VNC查看器。

更新2:版本

红帽:

代码语言:javascript
复制
    java version "1.6.0_17"
    OpenJDK Runtime Environment (IcedTea6 1.7.7) (rhel-1.17.b17.el5-x86_64)
    OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)

适用于XP:

代码语言:javascript
复制
    java version "1.7.0_05"
    Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
    Java HotSpot(TM) Client VM (build 23.1-b03, mixed mode, sharing)

Update 3:尝试在三台不同的红帽计算机上运行程序(在工作时都在同一组中),并尝试在不同的XP计算机上运行程序并重新启动。

更新4:今天我开始工作,发现问题已经神奇地消失了。然而,我真的很高兴知道为什么会发生这种情况,这样我(以及其他很多人都会遇到这个奇怪的问题)知道如何在将来解决这个问题。

EN

回答 5

Stack Overflow用户

发布于 2012-07-18 21:03:49

尝试将这段代码放在程序的开头。

代码语言:javascript
复制
KeyboardFocusManager.setCurrentKeyboardFocusManager(new DefaultKeyboardFocusManager(){
    public boolean dispatchKeyEvent(KeyEvent e) {
        if (e.getKeyLocation() == KeyEvent.KEY_LOCATION_NUMPAD){
            return true;
        }
        return super.dispatchKeyEvent(e);
    }
});
票数 1
EN

Stack Overflow用户

发布于 2012-07-20 12:18:29

很难给出一个准确的答案,但这并不是一个奇怪的现象。通常,当VNC或远程桌面共享发生时,一台机器的键盘和鼠标事件被传输到另一台机器。当此映射完成时,可能存在错误行为的可能性很大,特别是剪贴板复制和粘贴。这种情况不仅发生在Linux世界,也发生在windows世界。

我凭自己的经验告诉你这件事。在我的工作场所,我们经常将rdc放入其他机器,一些运行XP,另一些运行Windows 7。剪贴板在一台机器上复制,在远程机器上粘贴的操作在某些系统上工作,而在另一些系统上失败。

引用另一种使用java和远程桌面访问的经验,我在eclipse上运行了一个java应用程序。当我从其他机器进入我的机器时,我发现eclipse完全无法启动应用程序。要使它工作,我需要首先在我自己的系统上启动它,让应用程序继续运行,然后再从另一个rdc进入我的系统。

试想一下,如果Windows XP和Windows 7属于同一家族,情况就是这样的。人们只能希望,当将Linux和Windows与VNC一起使用时,这种奇怪的事情不会发生。)

如前所述,很难太准确地说明为什么会发生这种情况,但可以肯定地说,这纯粹是在OS级别发生的事情,而不是在swing框架级别上发生的事情。

票数 1
EN

Stack Overflow用户

发布于 2012-07-20 13:36:02

我不确定,但我只是想帮忙:

我在IcedTea方面的经验很糟糕。我不记得到底发生了什么,但那时,安装官方的Java解决了我的问题。Id est: Oracle提供的JRE。

http://java.com/en/download/index.jsp

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11418540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档