Heyho an alle und erstmals Grüße von mir.
Folgendes Problem: Ich habe eine Containerklasse “data_pflanze” erstellt und mittels dieser wird eine JList in der Klasse “Herb_gui” befüllt. Nun will ich aus dem Jlist selectedValue die Datenbank ID auslesen, um damit Änderungen in der MySql tablle machen zu können. Die Containerklasse bekommt die Daten aus einer MySql Tabelle. Ich bekomme die id aber nicht aus dem Model bzw aus dem selected value …
Containerklasse:
package herbarium;
public class data_pflanze
{
private int pflanze_id;
private String pflanze_name;
public data_pflanze()
{
}
public data_pflanze(int pflanze_id, String pflanze_name)
{
this.pflanze_id = pflanze_id;
this.pflanze_name = pflanze_name;
}
public int getPflanze_id()
{
return pflanze_id;
}
public void setPflanze_id(int pflanze_id)
{
this.pflanze_id = pflanze_id;
}
public String getPflanze_name()
{
return pflanze_name;
}
public void setPflanze_name(String pflanze_name)
{
this.pflanze_name = pflanze_name;
}
@Override
public String toString()
{
return getPflanze_name();
}
}
In der JList soll nur der Name angezeigt werden. Für MySql Selects usw. brauche ich aber die ID aus der Datenbank.
GUI:
package herbarium;
import javax.swing.DefaultListModel;
public class Herb_gui extends javax.swing.JFrame
{
MySql_herb data = new MySql_herb();
DefaultListModel model = new DefaultListModel();
int id;
public Herb_gui()
{
initComponents();
}
private void jb_refreshActionPerformed(java.awt.event.ActionEvent evt)
{
model.clear();
get_data();
}
private void btn_addActionPerformed(java.awt.event.ActionEvent evt)
{
data.Insert_plant(tf_insert_plant.getText());
}
private void btn_changeActionPerformed(java.awt.event.ActionEvent evt)
{
for (int i = 0; i < data.dp.size(); i++)
{
if (jList1.getSelectedValue()
.equals(data.dp.get(i).getPflanze_id()))
{
id = data.dp.get(i).getPflanze_id();
}
}
// Methode zum Ändern von Datensätzen
Change_plant(plant, id);
}
private void btn_deleteActionPerformed(java.awt.event.ActionEvent evt)
{
get_data();
}
private void get_data()
{
model.clear();
data.all_data();
for (int i = 0; i < data.dp.size(); i++)
{
model.addElement(data.dp.get(i));
}
jList1.setModel(model);
}
}
Angezeigt werden soll nur der Name, da ich aber für MySql Selects usw. die ID brauche, soll er mir den Listselect als Variable Id speichern, damit ich damit weiterarbeiten kann.
for(int i = 0; i <data.dp.size();i++)
{
if(jList1.getSelectedValue().equals(data.dp.get(i).getPflanze_id()))
{
id = data.dp.get(i).getPflanze_id();
}
}
So kommt nur “Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: herbarium.data_pflanze cannot be cast to java.lang.String” raus. Im Model sind die Daten aber drin.
“data.dp” ist die Liste der Containerklasse. Irgendwie muß ich den JList select mit der ID in der for Schleife vergleichen.
id = ((data_pflanze)jList1.getSelectedValue()).getId();
Bei diesem Vorschlag kommt immer “incompatible types: String cannot be converted to data_pflanze” raus.
Hat jemand eine Idee wie ich das lösen kann?
Mfg Pete