站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题高分诚心请教:用多个jcombobox的选项组成sql语句的查询,如何传递点击选项后的参数?不点击可以用getselecteditem,点击选项后应该用什么

高分诚心请教:用多个jcombobox的选项组成sql语句的查询,如何传递点击选项后的参数?不点击可以用getselecteditem,点击选项后应该用什么

摘要: 高分诚心请教:用多个jcombobox的选项组成sql语句的查询,如何传递点击选项后的参数?不点击可以用getselecteditem,点击选项后应该用什么


RT,JAVA新手,大家帮帮忙!


做个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(-#34;价格-#34;);
jcbpr=new JComboBox();
jcbpr.addItem(-#34;请选择-#34;);
jcbpr.addItem(-#34;15万以下-#34;);
jcbpr.addItem(-#34;15-25万-#34;);
jcbpr.addItem(-#34;25-35万-#34;);
jcbpr.addItem(-#34;35-45万-#34;);
jcbpr.addItem(-#34;45-60万-#34;);
jcbpr.addItem(-#34;60万以上-#34;);
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里好像没有这个监听,能给个例子嘛?


CSDN的高手呢?


楼主,你可以为其注册一个实现了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(-#34;test-#34;);
choose=new JComboBox();
choose.addItem(-#34;十万-#34;);
choose.addItem(-#34;二十万-#34;);
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(-#34;价格-#34;);
jcbpr=new JComboBox();
jcbpr.addItem(-#34;请选择-#34;);
jcbpr.addItem(-#34;15万以下-#34;);
jcbpr.addItem(-#34;15-25万-#34;);
jcbpr.addItem(-#34;25-35万-#34;);
jcbpr.addItem(-#34;35-45万-#34;);
jcbpr.addItem(-#34;45-60万-#34;);
jcbpr.addItem(-#34;60万以上-#34;);
jcbpr.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e)
{
cboxprname=(String)jcbpr.getSelectedItem();
System.out.println(-#34;after=-#34;+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(-#34;get=-#34;+cboxprname);
return cboxprname;
}
}

结果:
after=别墅
get=null

点击选项后的值没有保存下来:(应该改啊?


楼主,我在你说的基础上,加了几句,能够实现你要的效果
import javax.swing.*;
import java.awt.event.*;
class Test extends JFrame
{
JComboBox choose;
String str;
Test()
{
super(-#34;test-#34;);
choose=new JComboBox();
choose.addItem(-#34;十万-#34;);
choose.addItem(-#34;二十万-#34;);
add(choose);
choose.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent ae)
{str=(String)choose.getSelectedItem();
System.out.println(-#34;aaa-#34;);
System.out.println(str);
}
}
);
setSize(200,300);
setVisible(true);
}

public void getString()
{
if(str==null)
str=(String)choose.getSelectedItem();
System.out.println(-#34;bbb-#34;);
System.out.println(str);
}
public static void main(String[] args)
{Test a=new Test();
a.getString();
}

}
我怀疑你的jcbpr.addItemListener(new ItemListener())这个方法注册监听器失败,要不你在这个方法内部加上 System.out.println(-#34;aaa-#34;); 这样一句,以检测事件触发时,是否进入了监听器内部。

其实你说的“TO GSEAH():”那个问题也是可以解释的,因为在getstr(){System.out.println(str);return str;},被调用时,根本还没有触发事件,那么str当然是null了,所以,你可以你我加的那几句那样:
if(str==null)
str=(String)choose.getSelectedItem();

结果表明,实际上我最初发的那段代码是可以实现你要的效果的(即选定项是被保存下来了的),但是你在后面被一个现象迷惑了


感谢gseah()这么热心:),可以结贴了。


↑返回目录
前一篇: 问一个简单的问题!!!
后一篇: 为什么会出错?