修改该类源代码,主要是这两个方法。测试环境简体中文XP3测试通过
// Properties props = System.getProperties();
// String charset=props.getProperty("sun.jnu.encoding");
// "GBK"是输入时的环境,一般中文输入法都采用该字符集吧
char chcode=0;
public void onKey( final char character, final int keyCode, final boolean pressed ) {
System.out.println("--"+(int)character);
if (chcode==0) {
chcode=character;
if (character>127) {
return;
}
}else {
int temp=chcode;
chcode = (char) (character + (chcode << 8));
System.out.println(((int)temp<< 8)+"+"+(int)(character)+"="+((int)chcode));
}
try {
SwingUtilities.invokeAndWait( new Runnable() {
public void run() {
sendAWTKeyEvent( keyCode, pressed, chcode);
chcode=0;
}
} );
} catch ( InterruptedException e ) {
logger.logp(Level.SEVERE, this.getClass().toString(),
"onKey(character, keyCode, pressed)", "Exception", e);
} catch ( InvocationTargetException e ) {
logger.logp(Level.SEVERE, this.getClass().toString(),
"onKey(character, keyCode, pressed)", "Exception", e);
}
}
private void sendAWTKeyEvent( int keyCode, boolean pressed, char character ) {
keyCode = AWTKeyInput.toAWTCode( keyCode );
try {
if ( keyCode != 0 ) {
Component focusOwner = getFocusOwner();
if ( focusOwner == null ) {
focusOwner = desktop;
}
if ( character == '\0' ) {
character = KeyEvent.CHAR_UNDEFINED;
}
if ( focusOwner != null ) {
System.out.println("sendAWTKeyEvent:"+(int)character);
if ( pressed ) {
KeyEvent event = new KeyEvent( focusOwner, KeyEvent.KEY_PRESSED,
System.currentTimeMillis(), getCurrentModifiers( -1 ),
keyCode, character );
dispatchEvent( focusOwner, event );
System.out.println("dispatchEvent1:"+(int)character);
anInt.value = keyCode;
Char c = characters.get( anInt );
if ( c == null ) {
characters.put( new Int( keyCode ), new Char( character ) );
}
else {
c.value = character;
}
if ( character != KeyEvent.CHAR_UNDEFINED ) {
dispatchEvent( focusOwner, new KeyEvent( focusOwner, KeyEvent.KEY_TYPED,
System.currentTimeMillis(), getCurrentModifiers( -1 ),
0, character ) );
System.out.println("dispatchEvent2:"+(int)character);
}
}
if ( !pressed ) {
anInt.value = keyCode;
// Char c = characters.get( anInt );
// if ( c != null ) {
// character = c.value;
// //TODO: repeat input
//// if ( character != KeyEvent.CHAR_UNDEFINED ) {
//// dispatchEvent( focusOwner, new KeyEvent( focusOwner, KeyEvent.KEY_TYPED,
//// System.currentTimeMillis(), getCurrentModifiers( -1 ),
//// 0, character ) );
//// }
// }
System.out.println(focusOwner instanceof JTextField);
System.out.println((int)character+","+(character>255&&character<65535));
if (character>255&&character<65535) {
if (focusOwner instanceof JTextField) {
((JTextField)focusOwner).getDocument().insertString(((JTextField)focusOwner).getCaretPosition(), new String(new byte[]{(byte)(character/256),(byte)(character%256)},"gbk"), null);//getDocument().getStartPosition().insertString(zOrder, name, null);
System.out.println("---"+new String(new byte[]{(byte)(character/256),(byte)(character%256)},"gbk").toCharArray()[0]);
}
}else {
dispatchEvent( focusOwner, new KeyEvent( focusOwner, KeyEvent.KEY_RELEASED,
System.currentTimeMillis(), getCurrentModifiers( -1 ),
keyCode, character ) );
}
}
}
}
} catch (Exception e) {
}
}
分享到:
相关推荐
jMonkeyEngine(jME)是一个开源的Java 3D引擎,它的效果非常好,速度也不错
共12章JME中文教程,演示代码经测试无错
jMonkeyEngine 3.0 项目的 gradle 样板 桌面+安卓构建 maven 满足 jme3 依赖项 android sdk 必须在local.properties提供 安卓依赖 android sdk 构建工具 21.1.1 android 支持存储库 8 安卓支持库 21.0.1 执照 新的...
主要内容是介绍如何使用 jMonkeyEngine 进行游戏开发,旨在帮助初学者快速理解 jMonkeyEngine 中的核心概念,自己学习做的一些笔记,有不完美之处,还请见谅
jmonkeyengine是一个面向冒险的java开发人员的三维游戏引擎。它是开源的、跨平台的、尖端的。3.2.4是jmonkeyengine 3 sdk的最新稳定版本,是一个完整的游戏开发套件。我们将发布3.2.x更新,直到主要的3.3版本到来。
Jmonkeyengine 3.0 Beginners Guide
JME学习文档 中文版 jMonkeyEngine 入门学习
NULL 博文链接:https://hjk685.iteye.com/blog/1912303
jMonkeyEngine 3.0 Beginner's Guide
sdk, 在netbeans上,基于 jMonkeyEngine3 SDK jMonkeyEngine软件开发工具包( SDK ) 欢迎使用jMonkeyEngine软件开发工具包( SDK )的知识库。 这个SDK使用jMonkeyEngine简化了 3D 个应用程序的开发。 它包含开发完整...
jme3-clj-aide JMonkeyEngine3 + Clojure-Android + AIDE 示例项目
jmonkeyengine, 在Java中,一个完整的3D 游戏开发 jMonkeyEngine jMonkeyEngine是一款用于冒险Java开发人员的3D 游戏引擎。 它是开放的,跨平台的,和cutting的。 3.2.0是 jMonkeyEngine 3 SDK的最新稳定版本,一个...
基于jmonkeyengine游戏引擎,纯java开发,单机3d小游戏demo
jmonkeyengine:纯Java编写的一个完整的3D游戏开发套件
jmasters JMasters 是一个简单的应用程序,遵循所有 JMonkeyEngine 3.x 教程。 可以说它是对网站上现有教程的翻译。 使用的平台: JMonkeyEngine 3.x 64 位; Oracle JDK 7; Kubuntu 14.04 LTS。
这个 gem 将只包含 jMonkeyEngine 的源。 这样你的项目就不需要包含它了,因为它很大,并且在机场时用超过 80mb 的 jar 文件执行git push需要一段时间。 安装 将此行添加到应用程序的 Gemfile 中: gem '...
jme-clj 一个用于Clojure包装器库。 jMonkeyEngine是面向冒险的Java开发人员(现为Clojure开发人员)的3D游戏引擎。 它是开源,跨平台和尖端的。 如果您想了解有关引擎的更多请查看 ,强烈建议! 此外,还有 ,您...
FlagRushSeries中文翻译(1-10) jME版本 :jME_2.0.1_Stable 开发工具:MyEclipse8.5 操作系统:Window7/Vista FlagRush1——通过SimpleGame创建你的第一个应用程序 FlagRush2——从你的应用程序中移除SimpleGame...