Hallo,
ich wusste nicht, wie ich das Problem mit Worten erklären sollte, deswegen habe ich so ein kleines Programm geschrieben - 2 Klassen und 1 Interface.
Startklasse:
Interface:
2te Klasse:
Code ist funktionsfähig.
2te Klasse wird für jeden Datensatz mit neuen Daten instanziiert. Wenn ich im Datensatz auf "Editieren" klicke, wird Text des jew. Labels zum bearbeiten nach oben in JTextField übergeben, kann auch bearbeitet werden. Nach der Bearbeitung, wenn ich oben auf "Ändern" klicke, soll unten JPanel, wo ich auf "Edit" geklickt habe, aktualisiert werden. Hier habe ich als Beispiel nur 10 Panels genommen, tatsächlich ist die Anzahl variabel, halt so viel, wie viele Datensätze es gibt.
Es muss RICHTIGE JPanel aktualisiert werden und ich weiss nicht, wie ich es bestimmen kann.
ich wusste nicht, wie ich das Problem mit Worten erklären sollte, deswegen habe ich so ein kleines Programm geschrieben - 2 Klassen und 1 Interface.
Startklasse:
Code:
package test;
import java.awt.BorderLayout;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class TestClass implements TKInterface{
public static void main(String[] args){
int i=0;
JFrame hfenster=new JFrame("TestApp");
hfenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
hfenster.setLayout(new BorderLayout());
JPanel editpanel=new JPanel();
editpanel.add(editfeld);
JButton aendern=new JButton("Ändern");
// aendern.setActionListener an wen?
editpanel.add(aendern);
hfenster.add(editpanel,BorderLayout.NORTH);
JPanel anzeige=new JPanel();
anzeige.setLayout(new BoxLayout(anzeige,BoxLayout.Y_AXIS));
for(i=0;i<=10;i++){ // 10 nur als Beispiel.
anzeige.add(new DatenSatz().erstellen());
}
JScrollPane scroll=new JScrollPane(anzeige);
hfenster.add(scroll,BorderLayout.CENTER);
hfenster.setSize(300,300);
hfenster.setVisible(true);
}
Code:
package test;
import javax.swing.JTextField;
public interface TKInterface {
JTextField editfeld=new JTextField(10);
}
Code:
package test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class DatenSatz implements ActionListener,TKInterface{
String labeltext="Labeltext";
JLabel daten=new JLabel();
public JPanel erstellen(){
Date adatum=new Date();
long namecomp=adatum.getTime();
JPanel rgpanel=new JPanel();
daten.setText(""+namecomp);
JButton editieren=new JButton("Editieren");
editieren.addActionListener(this);
editieren.setActionCommand("EDIT");
rgpanel.add(daten);
rgpanel.add(editieren);
rgpanel.setBorder(BorderFactory.createEtchedBorder());
return rgpanel;
}
public void actionPerformed(ActionEvent aev) {
if(aev.getActionCommand().equals("EDIT")){
editfeld.setText(daten.getText());
}
}
}
Code ist funktionsfähig.
2te Klasse wird für jeden Datensatz mit neuen Daten instanziiert. Wenn ich im Datensatz auf "Editieren" klicke, wird Text des jew. Labels zum bearbeiten nach oben in JTextField übergeben, kann auch bearbeitet werden. Nach der Bearbeitung, wenn ich oben auf "Ändern" klicke, soll unten JPanel, wo ich auf "Edit" geklickt habe, aktualisiert werden. Hier habe ich als Beispiel nur 10 Panels genommen, tatsächlich ist die Anzahl variabel, halt so viel, wie viele Datensätze es gibt.
Es muss RICHTIGE JPanel aktualisiert werden und ich weiss nicht, wie ich es bestimmen kann.