修改该类源代码,主要是这两个方法。测试环境简体中文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)是一个强大的开源3D游戏引擎,专为Java开发者设计。这个中文教程旨在帮助初学者和有经验的程序员掌握JMonkeyEngine的使用,创建出引人入胜的3D游戏和应用程序。教程共分为12个章节,确保覆盖了...
5. **丰富的社区支持**:JMonkeyEngine有一个活跃的社区,提供了许多示例代码、插件和教程,方便开发者解决问题和分享经验。 本教程“学习JMonkey3(英文原版).pdf”和“学习JMonkey3(中文版ZBP翻译第一版).pdf”...
jMonkeyEngine(jME)是Java开发者用于创建三维游戏和应用程序的强大工具。作为一个开源的Java 3D引擎,它提供了一系列先进的图形功能,包括实时光照、动态阴影、粒子系统、物理模拟等,使得开发者能够构建出视觉...
jMonkeyEngine有一个活跃的社区,提供了大量的教程、示例代码和插件,便于初学者上手和经验丰富的开发者解决问题。官方文档详细介绍了各个组件的使用方法,帮助开发者充分利用引擎的功能。 ### 8. **跨平台性** ...
### JME中文教程知识点概述 #### 一、jMonkeyEngine3简介 - **定义与特点**:jMonkeyEngine3(简称JME3)是一款纯Java编写的免费3D游戏引擎,具备丰富的功能集,适用于各类游戏开发需求。该引擎不仅功能全面,其...
### JME3游戏开发引擎中文学习指南 #### 引言 JME3,全称jMonkeyEngine3,是一款开源的3D游戏开发引擎,专为Java开发者设计,旨在简化3D游戏和应用程序的开发过程。本文档将详细介绍如何在Netbeans6.x环境下搭建...
同时,对于希望跨平台发布游戏的开发者而言,jMonkeyEngine 3.0提供了良好的解决方案。 #### 二、OpenGL 和 Java 技术要点 - **OpenGL简介**:OpenGL是一种用于渲染2D、3D矢量图形的应用程序接口(API)。它在...
玩家的输入处理也是游戏交互的重要部分,jme3支持键盘、鼠标、游戏手柄等多种输入设备。 **7. 游戏逻辑与AI** “Rise of Mutants”的游戏逻辑和敌人AI可能由一系列状态机和行为树实现。开发者通过编写脚本或使用...
### JMonkeyEngine 3 (JME3) 中文教程概览 #### 一、JMonkeyEngine 3 简介 JMonkeyEngine 3 (简称 JME3) 是一款用 Java 语言编写的免费开源 3D 游戏引擎。它提供了一套完整的工具和 API,用于创建交互式 3D 应用...
1. **全栈解决方案**:jMonkeyEngine提供了一个完整的开发环境,包括场景管理、物理引擎、音频处理、光照和阴影效果、网络同步以及用户界面等组件,几乎涵盖了游戏开发的各个方面。 2. **高性能**:由于其基于Java...
本文将详细讲解"jme3材质基础知识",主要围绕jMonkeyEngine3(简称jME3)这个强大的开源Java游戏开发引擎。 jMonkeyEngine3是一个基于现代图形技术如OpenGL的3D游戏引擎,它为开发者提供了丰富的工具和库,简化了...
**JMonkeyEngine 3 (JME3) 文件格式详解** JMonkeyEngine 3(简称JME3)是一款开源的游戏开发引擎,专为构建3D游戏和应用而设计。它支持多种文件格式,使得开发者能够方便地导入和管理游戏资源。以下是对JME3支持的...
JMonkeyEngine3(简称JME3)是一款强大的开源3D游戏引擎,它基于Java语言,提供了丰富的图形渲染功能,使得开发者能够创建高质量的3D游戏。而Clojure则是一种现代的、动态类型的Lisp方言,以其简洁的语法和强大的...
Jmonkeyengine 3.0 Beginners Guide
jMonkeyEngine 的输入系统提供了一个强大且灵活的输入机制,允许开发者轻松地处理用户输入事件。 在这个教程中,开发者将学习如何使用 jMonkeyEngine 的输入系统,处理用户输入事件,实现游戏逻辑更新和渲染。 1.6...