3

私はjTextfieldを持っています。フォームがロードされたときに、これにフォーカスを設定したいと思います。これどうやってするの?私はネットビーンズを使用しています。使用requestFocus()していますが、機能していません。

4

4 に答える 4

3

このリンクが役立つ場合があります:フォーカス サブシステムの使用方法

requestFocus() の代わりに requestFocusInWindow() を使用して、目的の機能を実現することをお勧めします。

理由:(同じリンクから)

これらのメソッドは非推奨になりました。別のメソッド requestFocus は、コンポーネントのウィンドウにフォーカスを移そうとしますが、常に可能であるとは限らないため、お勧めできません。JDK 1.4 では、代わりに requestFocusInWindow メソッドを使用する必要があります。このメソッドは、コンポーネントのウィンドウをフォーカスしようとしません。メソッドは、メソッドが成功したかどうかを示すブール値を返します。

これは大まかな例ですが、これを使用して開始できると思います。

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class TestFrame extends JFrame {

    JButton button1;
    JButton button2;

    JTextField textField;

    public TestFrame() {
        initComponents();
    }

    private void initComponents(){
        button1 = new JButton("Button 1");
        button2 = new JButton("Button 2");
        textField = new JTextField();

        button1.setPreferredSize(new Dimension(100,20));
        button2.setPreferredSize(new Dimension(100,20));
        textField.setPreferredSize(new Dimension(300,20));

        this.setSize(new Dimension(600, 300));
        this.setLayout(new BorderLayout());

        getContentPane().add(button1, BorderLayout.WEST);
        getContentPane().add(button2, BorderLayout.CENTER);
        getContentPane().add(textField, BorderLayout.EAST);
        this.pack();
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //This will set focus on the text field
        textField.requestFocusInWindow();
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new TestFrame();
            }
        });
    }
}

最新の編集:NETBeanSの場合

使用コード:

package focusexample;

public class FocusExample extends javax.swing.JFrame {

    public FocusExample() {
        initComponents();
        jTextField1.requestFocusInWindow();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("jButton1");

        jButton2.setText("jButton2");

        jTextField1.setText("jTextField1");

        jTextField2.setText("jTextField2");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(87, 87, 87)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jTextField1))
                .addGap(69, 69, 69)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jTextField2))
                .addContainerGap(98, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(95, 95, 95)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton1)
                    .addComponent(jButton2))
                .addGap(58, 58, 58)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(104, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>


    public static void main(String args[]) {

        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(FocusExample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(FocusExample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(FocusExample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(FocusExample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new FocusExample().setVisible(true);                
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    // End of variables declaration
}
于 2012-06-30T03:46:58.057 に答える
0

textfield.requestFocusInWindow(); を使用しました。多数のフォーム要素 (そのうちのいくつかはテキストフィールド) を含む GUI 内の上記の行。それはうまくいきます。「テキストフィールド」を、問題の要素に付けた名前に置き換えるだけです。私の場合、repId です。だから私は repID.requestFocusInWindow(); を使用します。そして、私のENTERボタンハンドラーの一番下に行を置きます。これで、ユーザーがフォーム フィールドにデータを入力して Enter キーを押すと、フォーカスが最初のテキスト フィールド「repID」に戻ります。答えてくれてありがとう。

于 2014-10-31T21:45:47.753 に答える
0

この例がお役に立てば幸いです。

        JTextField inputText = new JTextField(20);

        frame.addWindowFocusListener(new WindowAdapter() {
        public void windowGainedFocus(WindowEvent e) {
            inputText.requestFocusInWindow();
        }
    });
于 2020-03-05T13:27:42.517 に答える