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;
}
}