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



Java swing JTextField 英文或数字不能正常显示 不完全显示。:  
姓名输入的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);

Java code

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 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);

这是你的代码

如果您对CSDN论坛有意见和建议 请直接在本帖指教
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
seankaku
seankaku
seankaku
本版等级:T1

#3 得分:0回复于: 2014-11-22 15:16:37
哦,测试了一下,把系统输入法设置成 中文(简体)-美式键盘或其他英文输入发,则会 出现英文或数字无法正常显示,如果设置成QQ输入法或其他中文输入法,可以正常显示,如图: