-1

1 つの Java アプリケーションで「Enter」キーを押したときに 1 つのテキスト フィールドを送信する 1 つのサンプル コードを作成しようとしています。

JFrame と次のコードを使用しています。

package com.sh.st;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;

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




public class SearchScreen extends JFrame{

    JButton btsearch;
    JLabel lbsearch;
    JTextField txtsearch;
    JPanel p1;

    public SearchScreen(){

    //Button Creation
    btsearch= new JButton("Search");


    //Label Creation
    lbsearch= new JLabel("Type Keywords in english to be searched below:");


    //TextBox   
    txtsearch= new JTextField();


    //Pane Creation 
    p1=new JPanel();
    p1.setBackground(Color.gray);

    //Pane Components
    p1.add(lbsearch);
    p1.add(txtsearch);
    p1.add(btsearch);

    btsearch.setEnabled(true);

    //Adding JPaneel    
    getContentPane().add(p1);

    //JFrame Setup
    setSize(300,300);
    setTitle("SHST");

    //JFrame Layout Setup   
    p1.setLayout(new GridLayout(3,3));


    btsearch.setMnemonic(KeyEvent.VK_ENTER);

    }

}

しかし、問題は、同時に「alt」を保持する必要がある仮想キーとして、これはあまりにも不快で、ユーザーとして直感的ではないことです。

ここスタックとグーグルで多くのページを見ようとしましたが、どれも答えをくれませんでした。「addKeyListener」などのコマンドをいくつか見ましたが、今までやりたいことができませんでした。

助けてくれてありがとう

[解決したトピック] を編集:

    package com.sh.st;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;


public class EventSearch extends SearchScreen{

    String query;



    public EventSearch(){

        txtsearch.getInputMap().put(keyStroke, key);
        txtsearch.getActionMap().put(key, enterAction);


}

    Action enterAction = new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {

                HttpRequest http = new HttpRequest(CatchQuery());

                } catch (IOException e1) {
                e1.printStackTrace(); //print failure
                JOptionPane.showMessageDialog(null, "HTTP request failure.");
            }   
        }};
     String key = "ENTER";
     KeyStroke keyStroke = KeyStroke.getKeyStroke(key);



            public String CatchQuery(){
                query=txtsearch.getText();
                this.dispose();
                return query;
            }



}
4

2 に答える 2

2

使用できます KeyBindingsの使用方法KeyBindings

ここにコードがあります

final JTextField textfield = new JTextField();
Action enterAction = new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
        //do something
    }};
 String key = "ENTER";
 KeyStroke keyStroke = KeyStroke.getKeyStroke(key);
 textfield.getInputMap().put(keyStroke, key);
 textfield.getActionMap().put(key, enterAction);
于 2013-06-24T13:02:36.130 に答える
0

テキスト フィールドに ActionListener を追加するだけです。

//TextBox   
txtsearch = new JTextField();
txtsearch.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent e) {
    // code when enter is pressed in text field
  }
});
于 2013-06-24T13:39:17.540 に答える