জকমোবক্স নির্বাচন শোনার শ্রোতা?


145

আমি যখনই এ থেকে কোনও পছন্দ করা হয় তখনই আমি একটি ইভেন্টে আগুন নেওয়ার চেষ্টা করছি JComboBox

আমার যে সমস্যাটি হচ্ছে তা হ'ল কোনও সুস্পষ্ট addSelectionListener()পদ্ধতি নেই।

আমি চেষ্টা করার চেষ্টা করেছি actionPerformed(), কিন্তু এটি কখনই জ্বলে না।

মডেলটির ওভাররাইডিংয়ের সংক্ষিপ্ত JComboBox, আমি ধারণার বাইরে।

আমি কীভাবে একটিতে একটি নির্বাচনের পরিবর্তন সম্পর্কে অবহিত করব JComboBox ? **

সম্পাদনা: আমাকে ক্ষমা চাইতে হবে। দেখা যাচ্ছে যে আমি একটি দুর্ব্যবহারকারী সাবক্লাস ব্যবহার করছিলাম JComboBox, তবে আপনার উত্তর ভাল হওয়ায় আমি প্রশ্নটি ছেড়ে দেব।


দুর্দান্ত প্রশ্ন, যেহেতু আমি লক্ষ্য করেছি যে একটি কম্বোবক্স লোড করার জন্য অ্যাকশনপ্রশস্ত আগুন জ্বলেছে, তবে কখন এটি প্রত্যাশা করা হবে তা বেছে নেওয়ার ক্ষেত্রে নয় on
ব্রায়ান নোব্লাচ

উত্তর:


160

এটি এর মতো অ্যাকশনলিস্টনারের প্রতিক্রিয়া জানাতে হবে :

combo.addActionListener (new ActionListener () {
    public void actionPerformed(ActionEvent e) {
        doSomething();
    }
});

@ জন কালসিবেক ঠিক বলেছেন যে এটিও কার্যকরaddItemListener() হবে। আপনি ItemEventsপূর্ব থেকে নির্বাচিত আইটেমটির অনির্বাচনের জন্য একটি এবং নতুন আইটেমের নির্বাচনের জন্য অন্যটি পেতে পারেন। উভয় ইভেন্ট প্রকার ব্যবহার করবেন না!


45
আমি আইটেমলিস্টনারকে পছন্দ করব (এটি কেবল নির্বাচন বা নির্বাচন নির্বাচন না-করা তা পরীক্ষা করার জন্য কেবল আইটেমেন্টটি পরীক্ষা করে দেখুন)। নির্বাচন পরিবর্তন না হলেও অ্যাকশনলিস্টনারকে বরখাস্ত করা যেতে পারে (যেমন ব্যবহারকারী ইতিমধ্যে নির্বাচিত আইটেমটিতে ক্লিক করে)। এটি আপনি যা চান তা হতে পারে বা নাও পারে।
ড্যান ডায়ার

6
আমি জানি এই প্রশ্নটি পুরানো, তবে পরিপূরক হিসাবে, অ্যাড আইটেম পদ্ধতিটি বলা হলে অ্যাকশনলিস্টনারকেও বরখাস্ত করা হবে।
গ্যাব্রিয়েল কামারা

150

কোড ItemListenerবাস্তবায়নের উদাহরণ

class ItemChangeListener implements ItemListener{
    @Override
    public void itemStateChanged(ItemEvent event) {
       if (event.getStateChange() == ItemEvent.SELECTED) {
          Object item = event.getItem();
          // do something with object
       }
    }       
}

এখন আমরা কেবলমাত্র নির্বাচিত আইটেমটি পাব।

তারপরে কেবল আপনার জকমোবক্সে শ্রোতাদের যুক্ত করুন

addItemListener(new ItemChangeListener());

2
আমি এই কোডটি চেষ্টা করেছিলাম, একটি সমস্যা হ'ল আমি যখন ইতিমধ্যে নির্বাচিত আইটেমটি ক্লিক করব তখন শ্রোতা ট্রিগার হবে না, কারণ কোনও রাষ্ট্র পরিবর্তন নেই।
dmark

4
@ ডমার্ক আমি মনে করি এটি যুক্তিসঙ্গত, কারণ কিছুই পরিবর্তন হয়নি। এই জাতীয় দৃশ্যের উপর নির্ভর না করে হতে পারে আপনার কোনওভাবে আপনার ক্রিয়াকলাপ পুনর্গঠিত করা উচিত।
ভাইচেস্লাভ

@ ডার্ক ধন্যবাদ, আপনার মন্তব্য আমাকে একটি প্রশ্নের সমাধান করতে সহায়তা করেছে :)
টিয়া


11

আইটেম নির্বাচনের পরিবর্তনের জন্য শ্রোতা যুক্ত করতে এখানে একটি কম্বোবক্স তৈরি করা হচ্ছে:

JComboBox comboBox = new JComboBox();

comboBox.setBounds(84, 45, 150, 20);
contentPane.add(comboBox);

JComboBox comboBox_1 = new JComboBox();
comboBox_1.setBounds(84, 97, 150, 20);
contentPane.add(comboBox_1);
comboBox.addItemListener(new ItemListener() {
    public void itemStateChanged(ItemEvent arg0) {
        //Do Something
    }
});

3
এই উত্তরগুলি পূর্ববর্তী উত্তরগুলিকে বাড়িয়ে তোলে ...? দয়া করে সদৃশ করবেন না! সম্পর্কিত নয়: কখনও কোনও ম্যানুয়াল সাইজিং / উপাদান সনাক্তকরণ কখনই করবেন না, এটি উপযুক্ত লেআউটম্যানেজারের একচেটিয়া কাজ
ক্লিওপাত্র

7

আপনি এই চেষ্টা করতে পারেন

 int selectedIndex = myComboBox.getSelectedIndex();

-অথবা-

Object selectedObject = myComboBox.getSelectedItem();

-অথবা-

String selectedValue = myComboBox.getSelectedValue().toString();

আমি জানি কেন এটি হ্রাস করা হয়েছিল, তবে আমি বিশ্বাস করি যে এই নিম্নাঞ্চলগুলিকে পুনর্বিবেচনা করা উচিত ... আপনি যদি অ্যাকশনপ্রাপ্ত পদ্ধতিতে নির্বাচিত সূচকটি পরীক্ষা করেন তবে আপনি দেখতে পাবেন যে এটি কাজ করে। এটি আগুন ধরিয়ে দেয় এবং -1 ইভেন্টগুলি বাদ দিয়ে আপনি শুরুতে মিথ্যা গুলি চালানো বাদ দিতে পারবেন। আমার সমস্যার সমাধান!
ব্রায়ান নোব্লাচ

4

আমি সম্প্রতি এটির জন্য খুব একই সমাধানটির সন্ধান করছিলাম এবং সর্বশেষ নির্বাচিত আইটেম এবং নতুন নির্বাচিত আইটেমটির জন্য নির্দিষ্ট ভেরিয়েবলগুলি বরাদ্দ না করে একটি সহজ সমাধান করতে সক্ষম হয়েছিল find এবং এই প্রশ্নটি খুব সহায়ক হলেও আমার প্রয়োজনীয় সমাধানটি সরবরাহ করে নি। এটি আমার সমস্যার সমাধান করেছে, আমি আশা করি এটি আপনার এবং অন্যদের সমাধান করে। ধন্যবাদ।

আগের বা শেষ আইটেমটি কীভাবে পাব?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.