中文的输入(100分)

  • 主题发起人 主题发起人 tei
  • 开始时间 开始时间
T

tei

Unregistered / Unconfirmed
GUEST, unregistred user!
Java作的画面, 当光标进入姓名框时,自动变成中文的输入, 当进入年龄框变成英文的
输入, 怎么写? 谢谢!
 
我试验了半天,搞不定,可能于Component.getInputContext 和 InputContext.selectInputMethod
方法有关
 
DragonPC_???没有将革命进行到底,想法是对的,试试下面的程序(首先你的系统要支持中文才行):
import javax.swing.*;
import java.awt.im.*;
import java.awt.event.*;
import java.util.*;
public class InputTest implements FocusListener{
JTextField jtf1 = new JTextField();
JTextField jtf2 = new JTextField();
public InputTest(){
JDialog d = new JDialog(new JFrame(), "Test");
d.setBounds(100,100,200,200);
jtf1.setBounds(20,20,80,20);
jtf2.setBounds(20,60,80,20);
d.getContentPane().setLayout(null);
d.getContentPane().add(jtf1);
d.getContentPane().add(jtf2);
d.show();
Locale[] ls = Locale.getAvailableLocales();
jtf1.addFocusListener(this);
jtf2.addFocusListener(this);
}
public void focusGained(FocusEvent e){
boolean bRet = false;
Object obj = e.getSource();
if (obj == jtf1){
InputContext ic = jtf2.getInputContext();
bRet = ic.selectInputMethod(Locale.US);
}else
if (obj == jtf2){
InputContext ic = jtf1.getInputContext();
bRet = ic.selectInputMethod(Locale.SIMPLIFIED_CHINESE);
}
System.out.println("Set " + bRet);
}
public void focusLost(FocusEvent e){
}
public static void main(String[] args){
new InputTest();
}
}
 
我怎么实验的时候老是不成功呢?用YoYoYo兄的代码也是一样 [:(]
(Win2000 Pro + OfficeXP + JDK 1.4 beta3)
 
或许跟1.4beta有关。我就碰到过在1.4beta2中,show()或hide()一个window的时候出stackoverflow的错误。
可能跟系统也有关系,跟输入法也有关系。反正一个不对它就出不来。
 
jdk1.3.1就没有这些问题。不知道1.4是beta版本么
 
刚才在Jbuilder 9里测试了一下程序,程序运行成功,但是切换输入法没有成功。
 
后退
顶部