【问题标题】:How to select text fields using tab key in java如何在java中使用tab键选择文本字段
【发布时间】:2013-07-22 00:05:07
【问题描述】:

当我按键盘上的 Tab 键时,我想按上述顺序选择我的文本字段。怎么做?

【问题讨论】:

  • 你的意思是“标签索引”吗?向我们展示您的相关代码
  • 阅读 Customizing Focus Traversal 上的 Swing 教程部分,了解与您想要的类似的工作示例。
  • 你的意思是“标签索引”吗?是的
  • Swing 不支持这个概念。阅读教程。

标签: java user-interface netbeans tabs keyboard


【解决方案1】:

试试这个例子....

package com.Demo;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

@SuppressWarnings("serial")
public class TabTest extends JFrame {
    public TabTest() {
        initialize();
    }

    private void initialize() {
        setSize(300, 300);
        setTitle("JTextArea TAB DEMO");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        JTextField textField = new JTextField();
        JPasswordField passwordField = new JPasswordField();
        final JTextArea textArea = new JTextArea();
        JScrollPane scrollPane = new JScrollPane(textArea);

        //
        // Add key listener to change the TAB behaviour in
        // JTextArea to transfer focus to other component forward
        // or backward.
        //
        textArea.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_TAB) {
                    if (e.getModifiers() > 0) {
                        textArea.transferFocusBackward();
                    } else {
                        textArea.transferFocus();
                    }
                    e.consume();
                }
            }
        });

        getContentPane().add(textField, BorderLayout.NORTH);
        getContentPane().add(scrollPane, BorderLayout.CENTER);
        getContentPane().add(passwordField, BorderLayout.SOUTH);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new TabTest().setVisible(true);
            }
        });
    }
}

【讨论】:

  • 这没有回答问题。不要使用 KeyListener。 Swing 旨在与键绑定一起使用。
【解决方案2】:
jTextField1.setNextFocusableComponent(jTextField2);
jTextField2.setNextFocusableComponent(jTextField3);
jTextField3.setNextFocusableComponent(jTextField4);
jTextField4.setNextFocusableComponent(jTextField5);

试试这个:)

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • 在输入 jTextField1 时,您不会按下标签点击 jTextField5 吗?将这段代码放入构造函数 jTextField1.setNextFocusableComponent(jTextField5);
【解决方案3】:

试试这个:

txtfld.addFocusListener(new FocusListener() {
        @Override
        public void focusGained(FocusEvent e) {                
            txtfld.setText("aaa");
        }

        @Override
        public void focusLost(FocusEvent e) {
           ...
        }
    });

see 更完整的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 2018-06-27
    • 1970-01-01
    • 2018-12-29
    • 2011-11-07
    • 2011-06-06
    • 1970-01-01
    相关资源
    最近更新 更多