高分诚心请教:用多个jcombobox的选项组成sql语句的查询,如何传递点击选项后的参数?不点击可以用getselecteditem,点击选项后应该用什么 RT,JAVA新手,大家帮帮忙! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 做个SelectionListener听选项,那个选了就用getSelectedItem(),拿到然后就组装你的sql呗。 我代码是这样写的,但是选项改变后不能监听到,应该怎么改?public class Jcombopricename extends JPanel{ private JPanel panel; private JLabel label; private JComboBox jcbpr=null; private String cboxprname; public Jcombopricename() { label=new JLabel("价格"); jcbpr=new JComboBox(); jcbpr.addItem("请选择"); jcbpr.addItem("15万以下"); jcbpr.addItem("15-25万"); jcbpr.addItem("25-35万"); jcbpr.addItem("35-45万"); jcbpr.addItem("45-60万"); jcbpr.addItem("60万以上"); jcbpr.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e) { Jcombopricename.this.cboxprname=(String)jcbpr.getSelectedItem(); } }); panel=new JPanel(); panel.add(label); panel.add(jcbpr); } public JPanel getprpanel() { return panel; } public String getpricename() { if(cboxprname==null) { cboxprname=(String)jcbpr.getSelectedItem(); } return cboxprname; }} to obizss:jcombobox 如何监听SelectionListener?jcombobox API里好像没有这个监听,能给个例子嘛? 楼主,你可以为其注册一个实现了ActionListener接口的监听器,这种基本操作都可以触发主义事件: jcbpr.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){Jcombopricename.this.cboxprname=(String)jcbpr.getSelectedItem();}}); 我一开始就写的ActionListener 可是在public void itemStateChanged(ItemEvent e){Jcombopricename.this.cboxprname=(String)jcbpr.getSelectedItem();}});中,cboxprname值在itemStateChanged被改变了,可是跳出itemStateChanged,cboxprname又为空了没有保存到点击的选项值,我是在无法理解。大家帮我看看应该怎么改? 楼主,我写了一个监听JComboBox的事件的简单实现,运行通过,是你要的效果,代码如下:import javax.swing.*; import java.awt.event.*; class Test extends JFrame { JComboBox choose; String str; Test() { super("test"); choose=new JComboBox(); choose.addItem("十万"); choose.addItem("二十万"); add(choose); choose.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent ae) {str=(String)choose.getSelectedItem(); System.out.println(str); } } ); setSize(200,300); setVisible(true); } public static void main(String[] args) {new Test();} } 楼主运行看看。 TO GSEAH():我想用点击下拉框中的选项,组成SQL语句的查询条件,你在 actionPerformed里可以打印出STR,也是点击的选项,但是我想把STR保存下来并提取组成SQL查询条件,我在你的基础上加入了一个public getstr(){System.out.println(str);return str;},但是结果很意外,与在addActionListener中打印的System.out.println(str)不一样啊,结果是NULL,点击的选项没有保存下来啊有点抓狂了 我也是初学JAVA,想做一个MVC模式的查询体统,就这点问题搞了2-3天了,心灰意冷:( public class Jcombopricename extends JPanel{private JPanel panel;private JLabel label;private JComboBox jcbpr=null;private String cboxprname;public Jcombopricename(){label=new JLabel("价格");jcbpr=new JComboBox();jcbpr.addItem("请选择");jcbpr.addItem("15万以下");jcbpr.addItem("15-25万");jcbpr.addItem("25-35万");jcbpr.addItem("35-45万");jcbpr.addItem("45-60万");jcbpr.addItem("60万以上");jcbpr.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){cboxprname=(String)jcbpr.getSelectedItem();System.out.println("after="+cboxprname);}});panel=new JPanel();panel.add(label);panel.add(jcbpr);}public JPanel getprpanel(){return panel;}public String getpricename(){if(cboxprname==null){cboxprname=(String)jcbpr.getSelectedItem();}System.out.println("get="+cboxprname);return cboxprname;}}结果:after=别墅get=null点击选项后的值没有保存下来:(应该改啊? 楼主,我在你说的基础上,加了几句,能够实现你要的效果import javax.swing.*; import java.awt.event.*; class Test extends JFrame { JComboBox choose; String str; Test() { super("test"); choose=new JComboBox(); choose.addItem("十万"); choose.addItem("二十万"); add(choose); choose.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent ae) {str=(String)choose.getSelectedItem(); System.out.println("aaa"); System.out.println(str); } } ); setSize(200,300); setVisible(true); } public void getString() { if(str==null) str=(String)choose.getSelectedItem(); System.out.println("bbb"); System.out.println(str); } public static void main(String[] args) {Test a=new Test(); a.getString(); } } 我怀疑你的jcbpr.addItemListener(new ItemListener())这个方法注册监听器失败,要不你在这个方法内部加上 System.out.println("aaa"); 这样一句,以检测事件触发时,是否进入了监听器内部。其实你说的“TO GSEAH():”那个问题也是可以解释的,因为在getstr(){System.out.println(str);return str;},被调用时,根本还没有触发事件,那么str当然是null了,所以,你可以你我加的那几句那样:if(str==null) str=(String)choose.getSelectedItem(); 结果表明,实际上我最初发的那段代码是可以实现你要的效果的(即选定项是被保存下来了的),但是你在后面被一个现象迷惑了 感谢gseah()这么热心:),可以结贴了。 Eclipse 在读取存放在但有中文的目录下的XML文档时的问题 java 读取 UTF8字符集的mysql 乱码问题 为什么在dos下能编译运行,而在jcreator 就不能运行成功。求助! HttpClient抓取网络数据碰上JS的问题 JMS可以在一般的应用程序使用吗? [解释]Profile 在下面几个场合中怎么翻译?怎么理解? HashMap------------->int[] 求如何实现这个布局?1000分 jbuilder编辑器中光标定位问题! //请各位帮忙分析一下这段程序,那里有错,谢谢! BufferedInputStream的问题 为什么总出现指针异常?
private JLabel label;
private JComboBox jcbpr=null;
private String cboxprname;
public Jcombopricename()
{
label=new JLabel("价格");
jcbpr=new JComboBox();
jcbpr.addItem("请选择");
jcbpr.addItem("15万以下");
jcbpr.addItem("15-25万");
jcbpr.addItem("25-35万");
jcbpr.addItem("35-45万");
jcbpr.addItem("45-60万");
jcbpr.addItem("60万以上");
jcbpr.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e)
{
Jcombopricename.this.cboxprname=(String)jcbpr.getSelectedItem();
}
});
panel=new JPanel();
panel.add(label);
panel.add(jcbpr);
}
public JPanel getprpanel()
{
return panel;
}
public String getpricename()
{
if(cboxprname==null)
{
cboxprname=(String)jcbpr.getSelectedItem();
}
return cboxprname;
}
}
jcbpr.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e)
{
Jcombopricename.this.cboxprname=(String)jcbpr.getSelectedItem();
}
});
{
Jcombopricename.this.cboxprname=(String)jcbpr.getSelectedItem();
}
});中,cboxprname值在itemStateChanged被改变了,可是跳出itemStateChanged,cboxprname又为空了没有保存到点击的选项值,我是在无法理解。大家帮我看看应该怎么改?
import javax.swing.*;
import java.awt.event.*;
class Test extends JFrame
{
JComboBox choose;
String str;
Test()
{
super("test");
choose=new JComboBox();
choose.addItem("十万");
choose.addItem("二十万");
add(choose);
choose.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent ae)
{str=(String)choose.getSelectedItem();
System.out.println(str);
}
}
);
setSize(200,300);
setVisible(true);
}
public static void main(String[] args)
{new Test();}
}
楼主运行看看。
private JLabel label;
private JComboBox jcbpr=null;
private String cboxprname;public Jcombopricename()
{
label=new JLabel("价格");
jcbpr=new JComboBox();
jcbpr.addItem("请选择");
jcbpr.addItem("15万以下");
jcbpr.addItem("15-25万");
jcbpr.addItem("25-35万");
jcbpr.addItem("35-45万");
jcbpr.addItem("45-60万");
jcbpr.addItem("60万以上");
jcbpr.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e)
{
cboxprname=(String)jcbpr.getSelectedItem();
System.out.println("after="+cboxprname);
}
});
panel=new JPanel();
panel.add(label);
panel.add(jcbpr);
}
public JPanel getprpanel()
{
return panel;
}public String getpricename()
{
if(cboxprname==null)
{
cboxprname=(String)jcbpr.getSelectedItem();
}
System.out.println("get="+cboxprname);
return cboxprname;
}
}结果:
after=别墅
get=null点击选项后的值没有保存下来:(应该改啊?
import javax.swing.*;
import java.awt.event.*;
class Test extends JFrame
{
JComboBox choose;
String str;
Test()
{
super("test");
choose=new JComboBox();
choose.addItem("十万");
choose.addItem("二十万");
add(choose);
choose.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent ae)
{str=(String)choose.getSelectedItem();
System.out.println("aaa");
System.out.println(str);
}
}
);
setSize(200,300);
setVisible(true);
}
public void getString()
{
if(str==null)
str=(String)choose.getSelectedItem();
System.out.println("bbb");
System.out.println(str);
}
public static void main(String[] args)
{Test a=new Test();
a.getString();
}
}
我怀疑你的jcbpr.addItemListener(new ItemListener())这个方法注册监听器失败,要不你在这个方法内部加上 System.out.println("aaa"); 这样一句,以检测事件触发时,是否进入了监听器内部。其实你说的“TO GSEAH():”那个问题也是可以解释的,因为在getstr(){System.out.println(str);return str;},被调用时,根本还没有触发事件,那么str当然是null了,所以,你可以你我加的那几句那样:
if(str==null)
str=(String)choose.getSelectedItem(); 结果表明,实际上我最初发的那段代码是可以实现你要的效果的(即选定项是被保存下来了的),但是你在后面被一个现象迷惑了