我想清楚地重新定义我的主题,因为它不清楚。
所以我有两个 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 中所选项目的“数量”,
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 ;
}
}
最后我确实在应用程序启动时调用了方法,所以我这样做了,
私人无效formWindowOpened(java.awt.event.WindowEvent evt){
填充JCBOXPrj(); 填充JCBOXActivite();
}
但问题是,如果我在第一个 JCombobx 中没有任何项目(数据库表中没有数据),那么它会在这一行中给出错误
我猜错误来自'n.num'
java.lang.NullPointerException
at UserFrame.fillJCBOXActivite(UserFrame.java:202)
所以想对 n.num 进行测试,如果第一个 JCombobox 没有 Items 则什么也不做
感谢您的帮助,我希望现在很清楚,因为英语不好