Lautsprecher
Erfahrenes Mitglied
Hallo ich habe folgendes Pane angelegt:
Auf diesen Pane möchte ich Buttons mit bestimmten Texten anlegen. Die Bezeichnung der Texte lese ich aus einer Datenbank aus. Mein Problem ist, dass die Anzahl der Bezeichnungen in der Datenbank schwankt. D.h. Habe ich 20 Texte möchte ich 20 Buttons auf dem Pane. Bei 30 Texten, brauche ich auch 30 Buttons.
Mein Problem ist, wenn ich z.B. 20 Buttons auf dem Pane habe, die Datenbank dann neu auslese und jetzt z.B. nur noch 18 Einträge in der Datenbank stehen, dann bleiben 19 Buttons auf dem Pane stehen, wobei der 18. und 19. Button dann doppelt beschriftet sind.
Hier die Methode mit der ich den Buttons anlege:
Mit removeAll() versuche ich zuerst das ganze Pane zu "entleeren", aber irgendwie scheit dies nicht zu klappen.
Die Methode button_fill() steuere ich über eine ComboBox an, in dem ich einen bestimmten Eintrag selektiere.
Wäre super wenn jemand schon mal ein ähnliches Problem hatte und einen Lösungsansatz weiß
Grüße
Code:
private JEditorPane getJEditorPane2()
{
if (jEditorPane2 == null)
{
jEditorPane2 = new JEditorPane();
jEditorPane2.setBounds(new java.awt.Rectangle(24,89,966,428));
jEditorPane2.setLayout(new GridLayout(9,0));
jEditorPane2.setBackground(new java.awt.Color(219,220,221));
jEditorPane2.setEnabled(false);
}
return jEditorPane2;
}
Auf diesen Pane möchte ich Buttons mit bestimmten Texten anlegen. Die Bezeichnung der Texte lese ich aus einer Datenbank aus. Mein Problem ist, dass die Anzahl der Bezeichnungen in der Datenbank schwankt. D.h. Habe ich 20 Texte möchte ich 20 Buttons auf dem Pane. Bei 30 Texten, brauche ich auch 30 Buttons.
Mein Problem ist, wenn ich z.B. 20 Buttons auf dem Pane habe, die Datenbank dann neu auslese und jetzt z.B. nur noch 18 Einträge in der Datenbank stehen, dann bleiben 19 Buttons auf dem Pane stehen, wobei der 18. und 19. Button dann doppelt beschriftet sind.
Hier die Methode mit der ich den Buttons anlege:
Mit removeAll() versuche ich zuerst das ganze Pane zu "entleeren", aber irgendwie scheit dies nicht zu klappen.
Die Methode button_fill() steuere ich über eine ComboBox an, in dem ich einen bestimmten Eintrag selektiere.
Code:
private void button_fill()
{
jEditorPane2.removeAll();
if( null != sDbDrv && 0 < sDbDrv.length() &&null != sDbUrl && 0 < sDbUrl.length() && null != sTable && 0 < sTable.length() )
{
try
{
// Select fitting database driver and connect:
Class.forName( sDbDrv );
cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
}
catch( Exception ex )
{
}
}//end if (null !=)
try
{
String SQLDaten = null;
SQLDaten = baureihe_arbeitssation + "_Fehlerdef";
st = cn.createStatement();
rs = st.executeQuery("SELECT Fehlercode, Fehlerbeschreibung FROM " + SQLDaten + " where aktiv = '1' order by TOP_12");
String fc_fb = null;
Integer i = null;
int y = 0;
while(rs.next())
{
//Hier werden die Texte aus der Datenbank ausgelesen
fc_fb = rs.getString("Fehlercode") + "-" + rs.getString("Fehlerbeschreibung");
if (fc_fb != null)
y = y + 1;
if (y <= 36)
{
JButton button = new JButton("button"+y);
button.setActionCommand(fc_fb);
button.setText(fc_fb);
button.addActionListener(new java.awt.event.ActionListener()
{ public void actionPerformed(java.awt.event.ActionEvent e)
{
if(e.getActionCommand().equals(e.getActionCommand()));
{
try
{
.......... hier lese ich z.B. den Text wieder in eine jList ein }
catch(Exception a)
{
a.printStackTrace();
}
}
}
});
jEditorPane2.add(button);
}//ende if
}//ende while
Wäre super wenn jemand schon mal ein ähnliches Problem hatte und einen Lösungsansatz weiß
Grüße