私はかなりJavaに新しく、私は完全に自己がこの時点まで自分自身を教えています。Java:KeyListener Not working
今、私はJFrameクラスにKeyListenerを追加しようとしていますが、何が間違っているのか分からず、助けが必要です。その他のヒントは大歓迎です。
私のJFrameクラス:
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class TestJavaFrame implements ActionListener, KeyListener {
private static JFrame frame = new JFrame();
// Componenets
JLabel timeinmslabel = new JLabel("Enter the time in miliseconds:");
JTextField timeinms = new JTextField();
JRadioButton checkBox = new JRadioButton();
JRadioButton checkBox2 = new JRadioButton();
private boolean amountoftimes = false;
public TestJavaFrame(String windowname) {
frame.setName(windowname);
frame.setResizable(true);
frame.setSize(900, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(150, 50);
// JPanel
JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBounds(frame.getBounds());
// Bounds for components
timeinmslabel.setBounds((int) (frame.getBounds().getX()/2), 125, 200, 25);
timeinms.setBounds((int) (frame.getBounds().getX()/2 + 185), 125, 200, 25);
checkBox.setBounds((int) (frame.getBounds().getX()/2 + 185), 40, 200, 25);
checkBox2.setBounds((int) (frame.getBounds().getX()/2 + 185), 70, 200, 25);
// Action Listeners
checkBox.addActionListener(this);
frame.addKeyListener(this);
// edit components
checkBox.setText("Use clicked amount of times.");
// add components
panel.add(timeinmslabel);
panel.add(timeinms);
panel.add(checkBox);
panel.add(checkBox2);
frame.add(panel);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
System.out.println(e);
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyChar());
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println(e.getKeyChar());
}
@Override
public void keyTyped(KeyEvent e) {
System.out.println(e.getKeyChar());
}
}
あなたが私のメインが必要な場合は、私はそれを掲示すると完全に大丈夫だよ、それは今ないすべては、しかし、このGUIを作成することです。
なぜ、KeyListenerをフレームに追加しますか?あなたの行動要件は何ですか?キーイベントは、フォーカスのあるコンポーネントにのみディスパッチされ、フレームにはフォーカスがありません。フレームのテキストフィールドにはフォーカスがあります。通常、キーバインディングを使用します。このページの右側にある「関連する」という見出しの下にあるフォーラムを検索するか、質問を読んでください。また、nullレイアウトは使用しないでください。 Swingはレイアウトマネージャで使用するように設計されています。 – camickr
@camickrそのオートクリッカープログラムは、私が言ったように私はここで学ぶことを試みている。ユーザーが特定のキーを押すと、オートクリッカーが停止します。 JPanelにこのキーバインドを追加する必要がありますか? – Zachary
'レイアウトをnullにしないのはなぜですか?' - レイアウト管理の仕組みを説明するチュートリアルのセクションがあります。 – camickr