在ubuntu中安装好了图形界面,搜狗输入法,企鹅fcitx,
可以在浏览器,系统控制台等地方输入中文,并且切换成英文输入。
但是启动好swing应用后不能在文本框里输入中文,输入法显示是搜狗输入法,输入法那里也无法通过快捷键切换。
有没有遇到类似情况的啊

ubuntu下的java swing应用JTextField无法输入中文
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- Jarvis _love_dl 2018-03-12 06:51关注
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;public class Main {
public static void main(String[] args) throws Exception { JFrame frame = new JFrame("JTextField 只能输入中文,字母,数字"); JLabel label = new JLabel("输入:"); JTextField textField = new JTextField(20); // 当 JTextField 中内容发生改变时触发 textField.addCaretListener(new TextFieldInputListener()); JPanel panel = new JPanel(); panel.add(label); panel.add(textField); frame.add(panel, BorderLayout.CENTER); frame.pack(); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }
}
class TextFieldInputListener implements CaretListener {
@Override public void caretUpdate(CaretEvent e) { JTextField textField = (JTextField) e.getSource(); // 获得触发事件的 JTextField String text = textField.getText(); if (text.length() == 0) { return; } char ch = text.charAt(text.length() - 1); if (!(ch >= '0' && ch <= '9' // 数字 || ch >= 'A' && ch <= 'z' // 字母 || ch >= '\u4E00' && ch <= '\u9FA5')) { // 中文,最常用的范围是 U+4E00~U+9FA5,也有使用 U+4E00~ U+9FFF 的,但目前 U+9FA6~U+9FFF 之间的字符还属于空码,暂时还未定义,但不能保证以后不会被定义 JOptionPane.showMessageDialog(textField, "只能输入中文,字母,数字", "提示", JOptionPane.INFORMATION_MESSAGE); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { // 去掉 JTextField 中的末尾字符 textField.setText(text.substring(0, text.length() - 1)); } }); } }
}
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 电脑锁屏时vba运行SAP,excel数据不能复制到SAP
- ¥50 74LS系列 74LS00 74LS04设计一个RS485电路(关键词-差分)
- ¥30 各位help写一下代码
- ¥15 在运行SDEdit模型下载不了
- ¥15 求51控制l298n驱动的小车中超声波避障怎么写
- ¥15 电脑连上WIFI却用不了
- ¥30 MATLAB在RLC电路的固有响应和阶跃响应GUI仿真报告
- ¥15 hyper-v出现的问题
- ¥15 有能用的可加酬金,求可以批量下载懒人听书的软件,能登录自己帐号的。
- ¥100 高博一起做RGB-D SLAM(5)VO无法出visualisation问题