最近在做一个模拟中文输入的application程序.
在中间要用到 ctrl+SPACE,请问,怎么做才能实现ctrl+SPACE,怎么才能与其它的按下单一的键进行区别开来,
,还有一个小问题是,怎么来从键盘事件中捕获中文呢?
急......
[此贴子已经被作者于2007-2-6 17:44:45编辑过]
up.
没做成功.请大家帮一下.
代码如下.
package jdialog_test_extends;
/*********************************************
*author @scoladi
*JDialog_test JDialog_test_extends.java
**********************************************/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class JDialog_test_extends extends JDialog implements KeyListener
{
JLabel about;
JTextField jtf;//英文下进行输入
char input;
boolean flag=false;
public JDialog_test_extends() {
this.setTitle("对话使用.测试");
about = new JLabel("JDialog使用方法测试");
about.setHorizontalAlignment(SwingConstants.CENTER);
this.getContentPane().add(about, BorderLayout.NORTH);//加入第一个组件
this.addWindowListener(new WindowAdapter()
{ /**********************/
public void windowClosing(WindowEvent e)//重写了窗口事件. 是为了能使整个进程都停下.
{ /**********************/
dispose();
System.exit(0);
}
});
JDialog.setDefaultLookAndFeelDecorated(true);//static mothed
jtf =new JTextField(10);//10 columns
this.getContentPane().add(jtf, BorderLayout.SOUTH);//加入第二个组件
jtf.addKeyListener(this);
}
public static void main(String[] args) {
JDialog_test_extends mm=new JDialog_test_extends();
mm.setBounds(400,400,100,80);
mm.pack();
mm.show();
}
public void keyPressed(KeyEvent e)
{
if(e.getKeyChar()==KeyEvent.VK_SPACE)//空格键的判断
{
/**********************/
dispose(); //通过这种方式进行,达到空格键退出的操作.
System.exit(0);//把dispose()放于此能更好的退出.
} /**********************/
else if(e.getModifiersEx()==(e.CTRL_DOWN_MASK+e.VK_SPACE ))
{
about.setText("测试 进入输入法.");
flag=true;//用来设置其输入状态的标记.
}
else
{
if(flag==true) //用于字符串的输入方法
{
about.setText("进入flag=true测试");
flag=false;
}
else //if(e.getKeyChar()!=)
{ //专门用于字符输入的方法.
String sti_chr; /*************************/
sti_chr=Character.toString(e.getKeyChar());//格式转化
about.setText(sti_chr); /*************************/
}
}
}
public void keyReleased(KeyEvent e)
{
}
public void keyTyped(KeyEvent e)
{
}
}
无法捕获ctrl+space键,且,中文无法让其展示到标签上,请帮看下.谢谢.