【发布时间】:2013-03-01 21:21:27
【问题描述】:
我想清楚地重新定义我的主题,因为它不清楚。
所以我有两个 JCombobox。如果我在第一个中选择一个项目,第二个显示项目。
第一个和第二个JCombobox填充来自mysql的请求,
我创建了两个方法,
一个来填充第一个JCombobox:
代码:
public void fillJCBOXPrj( )
{
connexion c = new connexion();
Statement s ;
ResultSet rs ;
try {
s = c.createStatement();
rs =c.selection("SELECT Distinct(IdProjet),idpro,NomProjet FROM projet where projet.iduser='"+this.getid()+"' ");
while(rs.next())
{
String num = rs.getString("idpro");
String nom = rs.getString("NomProjet");
String ref = rs.getString("IdProjet");
jComboBox1.addItem(new RF(nom,ref,num));
} } catch (Exception ex) {
ex.printStackTrace();
}
}
sconde 方法:根据第一个 JCombobox 中的选定项填充第二个 JCombobox
Code :
public void fillJCBOXActivite()
{
RF n = (RF) jComboBox1.getSelectedItem();
connexion c = new connexion();
Statement s ;
ResultSet rs ;
try {
s = c.createStatement();
System.out.println(n.num);
rs =c.selection("SELECT idactiv,NomActiviter,Phase FROM activiter WHERE activiter.IDProjet='"+n.num+"' ");
while(rs.next())
{
String num = rs.getString("idactiv");
String nom = rs.getString("NomActiviter");
String ref = rs.getString("Phase");
jComboBox3.addItem(new RF(nom,ref,num));
} } catch (Exception ex) {
ex.printStackTrace();
}
}
和RF n = (RF) jComboBox1.getSelectedItem();它调用类RF返回请求中使用的第一个JCombobox中选定项目的'num',
RF **n** = (RF) jComboBox1.getSelectedItem();
.....
....
rs =c.selection("SELECT idactiv,NomActiviter,Phase FROM activiter WHERE activiter.IDProjet=**'"+n.num+"'** ");
射频类:
class RF
{
public final String nom;
public final String ref;
public final String num;
public RF(String nom, String ref, String num)
{
this.nom = nom;
this.num = num;
this.ref = ref;
}
@Override
public String toString()
{
return ref +" - " +nom ;
}
}
最后我确实在应用程序启动时调用了这些方法, 所以我这样做,
private void formWindowOpened(java.awt.event.WindowEvent evt) {
fillJCBOXPrj(); fillJCBOXActivite();
}
但问题是,如果我在第一个 JCombobx 中没有任何项目(数据库表中没有数据)那么它会在这一行中给出错误
我猜错误来自 'n.num'
java.lang.NullPointerException
at UserFrame.fillJCBOXActivite(UserFrame.java:202)
所以想对 n.num 进行测试,如果第一个 JCombobox 没有项目,则什么也不做
感谢您的帮助,我希望现在很清楚,因为我的英语不好
【问题讨论】:
-
为什么要让自己变得困难,并为您的班级和成员分配这样不具描述性的名称?
-
我打赌你会在这里得到
ClassCastException:RF n = (RF) jComboBox1.getSelectedItem();请查看Stack Overflow question checklist 并相应地编辑您的帖子。 -
尝试 ... 尝试 { RF n = (RF) jComboBox1.getSelectedItem(); } catch( 异常 e) { e.printStackTrace(); }
-
请学习java命名约定并遵守它们。
标签: java string swing if-statement