PDA

View Full Version : سوال: JComboBox



Ma_Y_R
جمعه 10 آبان 1392, 20:03 عصر
سلام.....جه جوری میتونم توی comboBox با انتخاب هر گزینه ی خاص یه دستور مخصوص به همون گزینه رو انجام بدم؟؟؟؟؟؟؟؟؟؟

java.source.ir
شنبه 11 آبان 1392, 21:44 عصر
سلام.....جه جوری میتونم توی comboBox با انتخاب هر گزینه ی خاص یه دستور مخصوص به همون گزینه رو انجام بدم؟؟؟؟؟؟؟؟؟؟
سلام
این موضوع را با شرح یک مسئله توضیح می دهم:
فرض شود یک Label وجود دارد، که می خواهیم با انتخاب هریک از گزینه های موجود در ComboBox تصویر موجود در Label تغییر نماید:


imagesComboBox.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent event)
{
if(event.getStateChange() == ItemEvent.SELECTED)
label.setIcon.......;
}
}
);


همانطور که در تکه کد بالا مشاهده می شودبا استفاده از Listenerیی با نام ItemListener که به صورت یک Inner Class تعریف شد، این رویداد را مدیریت کردیم.

Ma_Y_R
دوشنبه 13 آبان 1392, 09:33 صبح
من تو برنامم از یه comboboxاستفاده کردم که سه آیتم داره .ولی وقتی روی آیتم اول کلیک میکنم کار نمیکنه!!
برای هندل کردن هم از کد بالا استفاده کردم ولی بازم مشکل هست..دلیلش چی میتونه باشه؟؟؟!!!

کامروا
دوشنبه 13 آبان 1392, 10:41 صبح
من تو برنامم از یه comboboxاستفاده کردم که سه آیتم داره .ولی وقتی روی آیتم اول کلیک میکنم کار نمیکنه!!
برای هندل کردن هم از کد بالا استفاده کردم ولی بازم مشکل هست..دلیلش چی میتونه باشه؟؟؟!!!

اگر کدتون رو قرار داده بودید بهتر بود.

بهرحال مشکل باید از قسمت ItemListener باشه.
مثال دوستمون java.source.ir کاملش به این شکل میشه :

public class Gui extends JFrame {
private JComboBox box;
private JLabel picture;

private static String[] filename = {"1.png", "2.png"};
private Icon[] pics = {new ImageIcon(getClass().getResource(filename[0])), new ImageIcon(getClass().getResource(filename[1]))};

public Gui() {
setLayout(new FlowLayout());
box = new JComboBox(filename);
box.addItemListener(
new ItemListener() {
public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED)
picture.setIcon(pics[box.getSelectedIndex()]);
}
}
);
add(box);
picture = new JLabel(pics[0]);
add(picture);
}
}


موفق باشید

Ma_Y_R
دوشنبه 13 آبان 1392, 11:08 صبح
کد برنامه اینه:
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED){

L2=lang[to.getSelectedIndex()];

ولی نمیدونم مشکل چیه؟؟

کامروا
دوشنبه 13 آبان 1392, 12:04 عصر
کد برنامه اینه:
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED){

L2=lang[to.getSelectedIndex()];

ولی نمیدونم مشکل چیه؟؟

اول اینکه من کلا نفهمیدم چیکار میخواین بکنید و اسم متغیرهاتون هم گویا نیست. بعد هم لطف کنید کدهاتون رو درون تگ Java قرار بدید تا خوانا تر باشه.

مثال :

یک JComboBox داریم که شامل 3 گزینه هست و میخواهیم با انتخاب هر گزینه یک پیغام که حاوی ItemIndex اون گزینه هست نمایش داده بشه و اگر گزینه آخر انتخاب شد، برنامه Close شه.

public class Gui extends JFrame {
private JComboBox box;
private static String[] items = {"Item1", "Item2", "Exit"};

public Gui() {
setLayout(new FlowLayout());
box = new JComboBox(items);
box.addItemListener(
new ItemListener() {
public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) {
JOptionPane.showMessageDialog(null, box.getSelectedIndex());
if (box.getSelectedIndex() == 2)
System.exit(0);
}
}
}
);
add(box);
}
}

با مثال فوق بنظرم دیگه نباید مشکلی داشته باشید.

Ma_Y_R
سه شنبه 14 آبان 1392, 09:47 صبح
منظورتون از این که میگید اسم متغیر ها گویا نیست یعنی چی؟؟؟

ببینید میخوام با کلیک روی اسم هر زبان اون زبان انتخاب بشه....درواقع یه جور سیستم ترجمه ست.....ولی زبان اول کار نمیکنه.....

private static final String[] languageNames = {"Arabic","English","Persian"};

private static final Language[] lang= {Language.ARABIC,Language.ENGLISH, Language.PERSIAN,};
from=new JComboBox(languageNames);
from.setMaximumRowCount(3);
from.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED){

L1=lang[from.getSelectedIndex()];
}
}
});
اگه زبان عربی انتخاب بشه هیچ عملی انجام نمیشه......