Enterজাভাতে জে টেক্সটফিল্ড টাইপ করার সময় কেউ চাপ দিলে কী সনাক্ত করা সম্ভব ? কোনও বোতাম তৈরি না করে এটিকে ডিফল্ট হিসাবে সেট করুন।
Enterজাভাতে জে টেক্সটফিল্ড টাইপ করার সময় কেউ চাপ দিলে কী সনাক্ত করা সম্ভব ? কোনও বোতাম তৈরি না করে এটিকে ডিফল্ট হিসাবে সেট করুন।
উত্তর:
একটি JTextField
একটি ব্যবহার করতে পরিকল্পনা করা হয়েছিল ActionListener
শুধু একটি মত JButton
হয়। এর addActionListener()
পদ্ধতিটি দেখুনJTextField
।
উদাহরণ স্বরূপ:
Action action = new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("some action");
}
};
JTextField textField = new JTextField(10);
textField.addActionListener( action );
এখন ইভেন্টটি যখন বরখাস্ত করা হয় Enterকীটি ব্যবহার করা করা হয়।
এছাড়াও, একটি অতিরিক্ত সুবিধা হ'ল আপনি বোতামটি ডিফল্ট বোতামটি করতে না চাইলেও আপনি একটি বোতাম দিয়ে শ্রোতাদের ভাগ করতে পারেন can
JButton button = new JButton("Do Something");
button.addActionListener( action );
দ্রষ্টব্য, এই উদাহরণটিতে একটি ব্যবহার করে Action
, যা প্রয়োগ করে ActionListener
কারণ Action
সংযোজন বৈশিষ্ট্য সহ একটি নতুন এপিআই। উদাহরণস্বরূপ আপনি এটি অক্ষম করতে পারেন Action
যা পাঠ্য ক্ষেত্র এবং বোতাম উভয়ের জন্য ইভেন্টটিকে অক্ষম করবে।
JTextField function=new JTextField(8);
function.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//statements!!!
}});
আপনাকে যা করতে হবে তা হ'ল উপরের মতো জে টেক্সটফিল্ডে অ্যাড্যাকশনলিস্টনার! আপনি চাপ Enterদেওয়ার পরে কর্মটি বিবৃতিতে যা চান তা সম্পাদন করবে!
এর জন্য একটি ইভেন্ট যুক্ত করুন KeyPressed
।
private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode() == KeyEvent.VK_ENTER) {
// Enter was pressed. Your code goes here.
}
}
KeyListeners
অনেকগুলি ত্রুটি রয়েছে, যেগুলি KeyBindings
ফোকাস সম্পর্কিত, অনুলিপি / পেস্ট সম্পর্কিত এবং আরও অনেকগুলি দ্বারা আরও বেশি পরিমাণে যত্ন নেওয়া হয় । এটি এড়ানো উচিত, যেমন অপ্রচলিত কাজের জন্য যেমন ওপিতে বলা হয় asked
আপনি কি এই জাতীয় কিছু করতে চান?
JTextField mTextField = new JTextField();
mTextField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
// something like...
//mTextField.getText();
// or...
//mButton.doClick();
}
}
});
প্রথমে জে বাটন বা জে টেক্সটফিল্ডে অ্যাকশন কমান্ড যুক্ত করুন:
JButton.setActionCommand("name of command");
JTextField.setActionCommand("name of command");
তারপরে JTextField এবং JButton উভয়টিতে অ্যাকশনলিস্টনার যুক্ত করুন।
JButton.addActionListener(listener);
JTextField.addActionListener(listener);
এরপরে, আপনি অ্যাকশনলিস্টনার বাস্তবায়ন লিখন
@Override
public void actionPerformed(ActionEvent e)
{
String actionCommand = e.getActionCommand();
if(actionCommand.equals("Your actionCommand for JButton") || actionCommand.equals("Your actionCommand for press Enter"))
{
//Do something
}
}
অন্যান্য উত্তর (স্বীকৃত উত্তরগুলি সহ) ভাল, তবে আপনি যদি ইতিমধ্যে জাভা 8 ব্যবহার করেন তবে আপনি নিম্নলিখিতটি (আরও সংক্ষিপ্ততর, আরও নতুনভাবে) করতে পারেন:
textField.addActionListener(
ae -> {
//dostuff
}
);
গৃহীত উত্তর যেমনটি বলেছে, আপনি কেবল একটি সাথে প্রতিক্রিয়া জানাতে পারেন ActionListener
, যা এন্টার-কীটি ধরেছে।
যাইহোক, আমার পদ্ধতির জাভা 8 এ চালু হওয়া কার্যকরী ধারণাগুলির সুবিধা গ্রহণ করে।
আপনি যদি একটি বোতাম এবং জে টেক্সটফিল্ডের উদাহরণস্বরূপ একই ক্রিয়াটি ব্যবহার করতে চান তবে আপনি নিম্নলিখিতটি করতে পারেন:
ActionListener l = ae -> {
//do stuff
}
button.addActionListener(l);
textField.addActionListener(l);
যদি আরও ব্যাখ্যা প্রয়োজন হয়, দয়া করে আমাকে জানান!
আপনি যদি কোনও জেেক্সটফিল্ড প্রবেশের ডিফল্ট বোতাম ক্রিয়া সেট করতে চান তবে আপনাকে এটি করতে হবে:
//put this after initComponents();
textField.addActionListener(button.getActionListeners()[0]);
এটি [0] কারণ একটি বোতামটিতে প্রচুর ক্রিয়া থাকতে পারে তবে সাধারণত কেবল একটি থাকে (অ্যাকশনপ্রাপ্ত)।
আপনার ফ্রেমের প্রতিটি পাঠ্য ক্ষেত্রের জন্য, addKeyListener পদ্ধতিটি অনুরোধ করুন। তারপরে কী চাপানো পদ্ধতিটি বাস্তবায়ন এবং ওভাররাইড করুন, যেমন অন্যরা ইঙ্গিত করেছে। আপনার ক্রিয়াটি সক্রিয় করতে এখন আপনি নিজের ফ্রেমের যে কোনও ক্ষেত্র থেকে এন্টার টিপতে পারেন।
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
//perform action
}
}
public void keyReleased(KeyEvent e)
{
int key=e.getKeyCode();
if(e.getSource()==textField)
{
if(key==KeyEvent.VK_ENTER)
{
Toolkit.getDefaultToolkit().beep();
textField_1.requestFocusInWindow();
}
}
'এন্টার টিপুন' এর জন্য যুক্তি লেখার জন্য , & এর পরিবর্তে JTextField
লজিকটিকে keyReleased()
ব্লকের ভিতরে রাখা ভাল ।keyTyped()
keyPressed()
KeyListeners
থেকে খুব কম স্তর Swing
। সঙ্গে ব্যবহার Swing
:-)
কেবল এই কোডটি ব্যবহার করুন:
SwingUtilities.getRootPane(myButton).setDefaultButton(myButton);