Apakah mungkin untuk mendeteksi ketika seseorang menekan Entersaat mengetik di JTextField di java? Tanpa harus membuat tombol dan mengaturnya sebagai default.
sumber
Apakah mungkin untuk mendeteksi ketika seseorang menekan Entersaat mengetik di JTextField di java? Tanpa harus membuat tombol dan mengaturnya sebagai default.
Sebuah JTextField
dirancang untuk menggunakan ActionListener
hanya seperti JButton
ini. Lihat addActionListener()
metode JTextField
.
Sebagai contoh:
Action action = new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("some action");
}
};
JTextField textField = new JTextField(10);
textField.addActionListener( action );
Sekarang acara tersebut dijalankan saat Enterkunci digunakan.
Selain itu, manfaat tambahannya adalah Anda dapat membagikan pendengar dengan sebuah tombol meskipun Anda tidak ingin menjadikan tombol tersebut sebagai tombol default.
JButton button = new JButton("Do Something");
button.addActionListener( action );
Perhatikan, contoh ini menggunakan Action
, yang mengimplementasikan ActionListener
karena Action
merupakan API yang lebih baru dengan fitur tambahan. Misalnya Anda dapat menonaktifkan Action
yang akan menonaktifkan acara untuk bidang teks dan tombol.
yang perlu Anda lakukan hanyalah menambahkanActionListener ke JTextField seperti di atas! Setelah Anda menekan Entertindakan akan dilakukan apa yang Anda inginkan pada pernyataan itu!
sumber
Tambahkan acara untuk
KeyPressed
.sumber
KeyListeners
memiliki banyak kekurangan, yang diurus olehKeyBindings
, seperti, terkait fokus, terkait salin / tempel, dan banyak lagi. Itu harus dihindari, untuk tugas-tugas sepele seperti yang ditanyakan di OP.Apakah Anda ingin melakukan sesuatu seperti ini?
sumber
Pertama tambahkan perintah tindakan pada JButton atau JTextField dengan:
Kemudian tambahkan ActionListener ke JTextField dan JButton.
Setelah itu, tulis implementasi On You ActionListener
sumber
Jawaban lain (termasuk yang diterima) bagus, tetapi jika Anda sudah menggunakan Java8, Anda dapat melakukan hal berikut (dengan cara yang lebih singkat dan lebih baru):
Seperti jawaban yang diterima, Anda cukup bereaksi dengan
ActionListener
, yang menangkap Enter-Key.Namun, pendekatan saya memanfaatkan konsep fungsional yang diperkenalkan di Java 8.
Jika Anda ingin menggunakan tindakan yang sama misalnya untuk tombol dan JTextField, Anda dapat melakukan hal berikut:
Jika perlu penjelasan lebih lanjut, beri tahu saya!
sumber
Jika Anda ingin menyetel aksi tombol default di JTextField enter, Anda harus melakukan ini:
Ini [0] karena sebuah tombol dapat memiliki banyak tindakan, tetapi biasanya hanya memiliki satu tindakan (ActionPerformed).
sumber
Untuk setiap bidang teks dalam bingkai Anda, aktifkan metode addKeyListener. Kemudian terapkan dan timpa metode keyPressed, seperti yang ditunjukkan orang lain. Sekarang Anda dapat menekan enter dari bidang mana pun di bingkai Anda untuk mengaktifkan tindakan Anda.
sumber
Untuk menulis logika untuk 'Enter press'
JTextField
, lebih baik menyimpan logika di dalamkeyReleased()
blok daripadakeyTyped()
&keyPressed()
.sumber
KeyListeners
Adalah tingkat yang terlalu rendah dariSwing
perspektif. Gunakan API yang dimaksudkan untuk digunakan denganSwing
:-)Cukup gunakan kode ini:
sumber