使用swing在java中创建热键

时间:2011-12-21 07:28:06

标签: java swing

您好我写了以下代码来创建Java Swing中的热键。我为Jtextfield1 (Name)创建了助记符。它显示正确,但现在我需要知道在运行时我是否立即点击tf2然后光标将从tf2转到tf1

我在tf2中输入了一些值。然后我需要输入tf1。在这种情况下,我按ALT+N键(因为N是tf1的助记符)。光标聚焦tf1并在文本字段中输入名称。我该怎么做?

package hotkeys;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;

public class hotkey extends JFrame {

    public static void main(String arg[]) {

        JLabel Name=new JLabel("Name");
        JTextField tf1=new JTextField(20);
        Name.setLabelFor( Name );
        Name.setDisplayedMnemonic( 'N' );

        JLabel Regno=new JLabel("Reg_NO");
        JTextField tf2=new JTextField(20);

        JButton b1=new JButton("Save");
        JButton b2=new JButton("eXit");

        JFrame f=new JFrame();
        JPanel p=new JPanel();

        p.add(Name);
        p.add(Regno);
        p.add(tf1);
        p.add(tf2);
        p.add(b1);
        p.add(b2);

        f.add(p);
        f.setVisible(true);
        f.pack();
    }    
}

2 个答案:

答案 0 :(得分:2)

您必须查找KeyBindingsKeyBindings的输出应为javax.swing.Action,您可以将Focus设置为JComponent

答案 1 :(得分:1)

您描述的需求是JTextField的助记符。对于AbstractButton衍生,您可以使用setMnemonic直接设置助记符。对于JTextField,您可以创建JLabel并将助记符设置为JLabel。然后将标签附加到文本字段,助记符按预期工作。您将标签附加到文本字段,如下所示:

label.setLabelFor(textField);

因此,代码中唯一错误的是您在调用setLabelFor时输入了错误的参数。