Java swing JTextField 英文或数字不能正常显示

老兵-516 2014-11-22 12:50:15
如图:
姓名输入的abc却不能完整显示,切换成中文输入法后输入中文可以正常显示,
再切换到 英文输入法 输入 也能正常显示,怎么回事,望大神指点。

代码如下:
SpringLayout layout = new SpringLayout();
frame.getContentPane().setLayout(layout);
// 面板
Container pane = frame.getContentPane();
// 输入法
//pane.getInputContext().selectInputMethod(Locale.US);
pane.setBackground(Color.GREEN);
// 标题
JLabel title = new JLabel("用户登录");
// 字体
Font font = new Font(Font.SERIF,Font.BOLD,24);
title.setFont(font);
// 设置颜色
title.setForeground(Color.red);
pane.add(title);
// 标题显示位置
layout.putConstraint(SpringLayout.HORIZONTAL_CENTER, title, 0, SpringLayout.HORIZONTAL_CENTER, pane);
layout.putConstraint(SpringLayout.NORTH, title, 20, SpringLayout.NORTH, pane);
// 用户名
JLabel lname = new JLabel("姓名:");
lname.setFont(new Font(Font.SERIF,Font.PLAIN,16));
pane.add(lname);
JTextField ename = new JTextField("abc",15);
ename.setFont(new Font(Font.SERIF,Font.PLAIN,16));
pane.add(ename);
layout.putConstraint(SpringLayout.NORTH, lname, 100, SpringLayout.NORTH, pane);
layout.putConstraint(SpringLayout.WEST, lname, 120, SpringLayout.WEST, pane);
layout.putConstraint(SpringLayout.NORTH, ename, 100, SpringLayout.NORTH, pane);
layout.putConstraint(SpringLayout.WEST, ename, 10, SpringLayout.EAST, lname);

// 密码
JLabel lpass = new JLabel("密码:");
lpass.setFont(new Font(Font.SERIF,Font.PLAIN,16));
pane.add(lpass);
JPasswordField epass = new JPasswordField(15);
epass.setFont(new Font(Font.SERIF,Font.PLAIN,16));
pane.add(epass);
layout.putConstraint(SpringLayout.NORTH, lpass, 128, SpringLayout.NORTH, pane);
layout.putConstraint(SpringLayout.WEST, lpass, 120, SpringLayout.WEST, pane);
layout.putConstraint(SpringLayout.NORTH, epass, 128, SpringLayout.NORTH, pane);
layout.putConstraint(SpringLayout.WEST, epass, 10, SpringLayout.EAST, lpass);
// 按钮
JButton blogin = new JButton("登录");
blogin.setFont(new Font(Font.SERIF,Font.BOLD,16));
JButton bregist = new JButton("注册");
bregist.setFont(new Font(Font.SERIF,Font.BOLD,16));
pane.add(blogin);
pane.add(bregist);
layout.putConstraint(SpringLayout.NORTH, blogin, 170, SpringLayout.NORTH, pane);
layout.putConstraint(SpringLayout.WEST, blogin, 150, SpringLayout.WEST, pane);
layout.putConstraint(SpringLayout.NORTH, bregist, 170, SpringLayout.NORTH, pane);
layout.putConstraint(SpringLayout.WEST, bregist, 20, SpringLayout.EAST, blogin);
...全文
410 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
忧郁小白鼠 2014-12-25
  • 打赏
  • 举报
回复
楼主,我也碰到了这个问题,但是更改输入法之后,不能解决这个问题,求指导。 这是问题描述的链接:http://tieba.baidu.com/p/3485628121
老兵-516 2014-11-22
  • 打赏
  • 举报
回复
哦,测试了一下,把系统输入法设置成 中文(简体)-美式键盘或其他英文输入发,则会 出现英文或数字无法正常显示,如果设置成QQ输入法或其他中文输入法,可以正常显示,如图:
Koala_1 2014-11-22
  • 打赏
  • 举报
回复
	 SpringLayout layout = new SpringLayout();
	 JFrame frame = new JFrame();
	 frame.getContentPane().setLayout(layout);
	 // 面板
	 Container pane = frame.getContentPane();
	     // 输入法
	     //pane.getInputContext().selectInputMethod(Locale.US);
	 pane.setBackground(Color.GREEN);
	 // 标题
	 JLabel title = new JLabel("用户登录");
	 // 字体
	 Font font = new Font(Font.SERIF,Font.BOLD,24);
	 title.setFont(font);
	 // 设置颜色
	 title.setForeground(Color.red);
	     pane.add(title);
	     // 标题显示位置
	     layout.putConstraint(SpringLayout.HORIZONTAL_CENTER,  title, 0, SpringLayout.HORIZONTAL_CENTER,  pane);
	     layout.putConstraint(SpringLayout.NORTH,  title, 20, SpringLayout.NORTH,  pane);
	     // 用户名
	     JLabel lname = new JLabel("姓名:");
	     lname.setFont(new Font(Font.SERIF,Font.PLAIN,16));
	     pane.add(lname);
	     JTextField ename = new JTextField("abc",15);
	     ename.setFont(new Font(Font.SERIF,Font.PLAIN,16));
	     pane.add(ename);
	     layout.putConstraint(SpringLayout.NORTH,  lname, 100, SpringLayout.NORTH,  pane);
	     layout.putConstraint(SpringLayout.WEST,  lname, 120, SpringLayout.WEST,  pane);
	     layout.putConstraint(SpringLayout.NORTH,  ename, 100, SpringLayout.NORTH,  pane);
	     layout.putConstraint(SpringLayout.WEST,  ename, 10, SpringLayout.EAST,  lname);
	     
	     // 密码
	     JLabel lpass = new JLabel("密码:");
	     lpass.setFont(new Font(Font.SERIF,Font.PLAIN,16));
	     pane.add(lpass);
	     JPasswordField epass = new JPasswordField(15);
	     epass.setFont(new Font(Font.SERIF,Font.PLAIN,16));
	     pane.add(epass);
	     layout.putConstraint(SpringLayout.NORTH,  lpass, 128, SpringLayout.NORTH,  pane);
	     layout.putConstraint(SpringLayout.WEST,  lpass, 120, SpringLayout.WEST,  pane);
	     layout.putConstraint(SpringLayout.NORTH,  epass, 128, SpringLayout.NORTH,  pane);
	     layout.putConstraint(SpringLayout.WEST,  epass, 10, SpringLayout.EAST,  lpass);
	     // 按钮
	     JButton blogin = new JButton("登录");
	     blogin.setFont(new Font(Font.SERIF,Font.BOLD,16));
	     JButton bregist = new JButton("注册");
	     bregist.setFont(new Font(Font.SERIF,Font.BOLD,16));
	     pane.add(blogin);
	     pane.add(bregist);
	     layout.putConstraint(SpringLayout.NORTH,  blogin, 170, SpringLayout.NORTH,  pane);
	     layout.putConstraint(SpringLayout.WEST,  blogin, 150, SpringLayout.WEST,  pane);
	     layout.putConstraint(SpringLayout.NORTH,  bregist, 170, SpringLayout.NORTH,  pane);
	     layout.putConstraint(SpringLayout.WEST,  bregist, 20, SpringLayout.EAST,  blogin);
	 	 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	 	 frame.setVisible(true);
这是你的代码
Koala_1 2014-11-22
  • 打赏
  • 举报
回复
姓名输入的abc可以完整显示,运行程序时出现的

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧