はっきりしていなかったので、はっきりと主題を再形成したい。
だから私は2つのJComboboxを持っています。最初にアイテムを選択すると、2番目にアイテムが表示されます。
1番目と2番目のJComboboxは、mysqlからの要求で満たされています。
私は2つの方法を作成します
最初のJComboboxを埋めるための1つ:
コード:
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 methode:最初のJComboboxで選択されたアイテムに応じて2番目の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+"'** ");
クラスRF:
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)
したがって、最初のJComboboxにアイテムがない場合は何もしないように、n.numでテストを実行します。
助けてくれてありがとう、そして私は今はっきりしていることを願っています原因は英語では良くありません