hi leute!
Ich hab folgendes Problem.
Ich möchte in eine Liste die attribute meines Objekts schreiben...stattdessen wird aber immer nur die Adresse geschrieben...
vielleicht kann sich mal jemand meinen Code anschauen und mir sagen warum es nicht funktioniert...
Die Klasse mit dem SwingWorker
Die Datenklasse
Die CollectionKlasse
vielleicht könnt ihr mir weiterhelfen...
Ich hab folgendes Problem.
Ich möchte in eine Liste die attribute meines Objekts schreiben...stattdessen wird aber immer nur die Adresse geschrieben...
vielleicht kann sich mal jemand meinen Code anschauen und mir sagen warum es nicht funktioniert...
Die Klasse mit dem SwingWorker
Java:
public class ManuellGUI extends javax.swing.JFrame
{
private Kanonen model = new Kanonen();
private StringZerlegung sz = new StringZerlegung();
public int[] durchmesser = new int[10];
private int[] aktiveKanonen = new int[10];
private String[][] feld = new String[20][10];
private JTextField[] tfDurchmesser = new JTextField[10];
private JPanel[] paKanonen = new JPanel[10];
private JCheckBox[] cbSchiessen = new JCheckBox[10];
private JButton[] btFiren = new JButton[10];
/** Creates new form ManuellGUI */
public ManuellGUI()
{
initComponents();
liListe.setModel(model);
model.add(new Kanone(23,23,23)); // Testdaten werden aber auch nur als Adresse angezeigt
super.setLocationRelativeTo(null);
// Initialisierung des Textfeld-Arrays
tfDurchmesser[0] = tfØKM1;
tfDurchmesser[1] = tfØKM2;
tfDurchmesser[2] = tfØKM3;
tfDurchmesser[3] = tfØKM4;
tfDurchmesser[4] = tfØKM5;
tfDurchmesser[5] = tfØKM6;
tfDurchmesser[6] = tfØKM7;
tfDurchmesser[7] = tfØKM8;
tfDurchmesser[8] = tfØKM9;
tfDurchmesser[9] = tfØKM10;
// Initialisierung des Panel-Arrays
paKanonen[0] = paKanoneMan1;
paKanonen[1] = paKanoneMan2;
paKanonen[2] = paKanoneMan3;
paKanonen[3] = paKanoneMan4;
paKanonen[4] = paKanoneMan5;
paKanonen[5] = paKanoneMan6;
paKanonen[6] = paKanoneMan7;
paKanonen[7] = paKanoneMan8;
paKanonen[8] = paKanoneMan9;
paKanonen[9] = paKanoneMan10;
// Initialisierung des CheckBox-Arrays
cbSchiessen[0] = cbØKM1;
cbSchiessen[1] = cbØKM2;
cbSchiessen[2] = cbØKM3;
cbSchiessen[3] = cbØKM4;
cbSchiessen[4] = cbØKM5;
cbSchiessen[5] = cbØKM6;
cbSchiessen[6] = cbØKM7;
cbSchiessen[7] = cbØKM8;
cbSchiessen[8] = cbØKM9;
cbSchiessen[9] = cbØKM10;
// Initialisierung des Button-Arrays
btFiren[0] = btFire1;
btFiren[1] = btFire2;
btFiren[2] = btFire3;
btFiren[3] = btFire4;
btFiren[4] = btFire5;
btFiren[5] = btFire6;
btFiren[6] = btFire7;
btFiren[7] = btFire8;
btFiren[8] = btFire9;
btFiren[9] = btFire10;
// ShortCut '1' für den Button Feuern1
btFire1.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("1"), "fire1");
btFire1.getActionMap().put("fire1", new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
onFire1(e);
}
});
public void setAktiveKanonen(int[] aktiveKanonen)
{
this.aktiveKanonen = aktiveKanonen;
// Sperren der Kanonen die nicht aktiviert worden
for(int i = 0; i < paKanonen.length; i++)
{
if(aktiveKanonen[i] == 0)
{
btFiren[i].setEnabled(false);
cbSchiessen[i].setEnabled(false);
}
}
}
public void setTextFelder(int[] durchmesser)
{
for (int i = 0; i < durchmesser.length; i++)
{
if(durchmesser[i] != 0)
{
// Konsolenausgabe zu Testzwecken
System.out.println("setTextFelder d"+ (i+1) + ": " + durchmesser[i]);
// Setzen der Durchmesser
tfDurchmesser[i].setText("" + durchmesser[i]);
}
else
tfDurchmesser[i].setText("deaktiviert");
}
System.out.println();
}
private void onSwingWorker(java.awt.event.ActionEvent evt)
{
MySwingWorker worker;
try
{
slFertig.setValue(0);
worker = new MySwingWorker();
worker.addPropertyChangeListener
(
new PropertyChangeListener()
{
public void propertyChange(PropertyChangeEvent evt)
{
if ("progress".equals(evt.getPropertyName()))
{
slFertig.setValue((Integer)evt.getNewValue());
}
}
}
);
worker.execute();
}
catch (Exception e)
{
tfVKM4.setText("Fehler: "+e.getMessage());
}
}
private class MySwingWorker
extends SwingWorker<Object, Kanone>
{
public double speed;
public MySwingWorker()
throws Exception
{
tfVKM4.setText("Worker start...");
Scanner scanner = new Scanner(tfVKM5.getText());
speed = scanner.nextDouble();
}
/**
* Schreibt einen Text in das Textfeld tfStatus
* mit Hilfe der SwingUtilities, damit die Methode setText()
nur
* innerhalb der Swing-Threads aufgerufen wird.
* @param text1
*/
private void setText(final String text1)
{
SwingUtilities.invokeLater
(
new Runnable()
{
public void run()
{
tfVKM4.setText(text1);
}
}
);
}
@Override
protected Object doInBackground()
throws Exception
{
for(int i=0; i<10; i++)
{
Thread.sleep(1000);
Kanone kan = new Kanone(23,speed,23.23);
setText("doInBackground");
setProgress(10*(i+1)); // aktiviert propertyChange
Thread.sleep(1000);
publish(kan);
}
return null;
}
@Override
protected void done() // wird automatisch aufgerufen
{
// super.done();
tfVKM4.setText("Worker fertig");
// Object object = get();
// holt Ergebnis von doInBackground
}
@Override
protected void process(List<Kanone> chunks)
{
for(Kanone kan:chunks)
{
model.add(kan);
}
tfVKM4.setText("Worker arbeitet");
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[])
{
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new ManuellGUI().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btAlleSchiessen;
private javax.swing.JButton btFire1;
private javax.swing.JButton btFire10;
private javax.swing.JButton btFire2;
private javax.swing.JButton btFire3;
private javax.swing.JButton btFire4;
private javax.swing.JButton btFire5;
private javax.swing.JButton btFire6;
private javax.swing.JButton btFire7;
private javax.swing.JButton btFire8;
private javax.swing.JButton btFire9;
private javax.swing.JButton btSchiessenFreiMGUI;
private javax.swing.JButton btSwingWorker;
private javax.swing.JCheckBox cbØKM1;
private javax.swing.JCheckBox cbØKM10;
private javax.swing.JCheckBox cbØKM2;
private javax.swing.JCheckBox cbØKM3;
private javax.swing.JCheckBox cbØKM4;
private javax.swing.JCheckBox cbØKM5;
private javax.swing.JCheckBox cbØKM6;
private javax.swing.JCheckBox cbØKM7;
private javax.swing.JCheckBox cbØKM8;
private javax.swing.JCheckBox cbØKM9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel lbVKM1;
private javax.swing.JLabel lbVKM10;
private javax.swing.JLabel lbVKM2;
private javax.swing.JLabel lbVKM3;
private javax.swing.JLabel lbVKM4;
private javax.swing.JLabel lbVKM5;
private javax.swing.JLabel lbVKM6;
private javax.swing.JLabel lbVKM7;
private javax.swing.JLabel lbVKM8;
private javax.swing.JLabel lbVKM9;
private javax.swing.JLabel lbØKM1;
private javax.swing.JLabel lbØKM10;
private javax.swing.JLabel lbØKM2;
private javax.swing.JLabel lbØKM3;
private javax.swing.JLabel lbØKM4;
private javax.swing.JLabel lbØKM5;
private javax.swing.JLabel lbØKM6;
private javax.swing.JLabel lbØKM7;
private javax.swing.JLabel lbØKM8;
private javax.swing.JLabel lbØKM9;
private javax.swing.JList liListe;
private javax.swing.JPanel paAktionMGUI;
private javax.swing.JPanel paKanoneMan1;
private javax.swing.JPanel paKanoneMan10;
private javax.swing.JPanel paKanoneMan2;
private javax.swing.JPanel paKanoneMan3;
private javax.swing.JPanel paKanoneMan4;
private javax.swing.JPanel paKanoneMan5;
private javax.swing.JPanel paKanoneMan6;
private javax.swing.JPanel paKanoneMan7;
private javax.swing.JPanel paKanoneMan8;
private javax.swing.JPanel paKanoneMan9;
private javax.swing.JPanel paKanonen13;
private javax.swing.JPanel paKanonen47;
private javax.swing.JPanel paKanonen810;
private javax.swing.JSlider slFertig;
private javax.swing.JTextField tfVKM1;
private javax.swing.JTextField tfVKM10;
private javax.swing.JTextField tfVKM2;
private javax.swing.JTextField tfVKM3;
private javax.swing.JTextField tfVKM4;
private javax.swing.JTextField tfVKM5;
private javax.swing.JTextField tfVKM6;
private javax.swing.JTextField tfVKM7;
private javax.swing.JTextField tfVKM8;
private javax.swing.JTextField tfVKM9;
private javax.swing.JTextField tfØKM1;
private javax.swing.JTextField tfØKM10;
private javax.swing.JTextField tfØKM2;
private javax.swing.JTextField tfØKM3;
private javax.swing.JTextField tfØKM4;
private javax.swing.JTextField tfØKM5;
private javax.swing.JTextField tfØKM6;
private javax.swing.JTextField tfØKM7;
private javax.swing.JTextField tfØKM8;
private javax.swing.JTextField tfØKM9;
// End of variables declaration
}
Die Datenklasse
Java:
public class Kanone
{
private final int durchmesser;
private final double v;
private final double energie;
public Kanone(int durchmesser, double v, double energie)
{
this.durchmesser = durchmesser;
this.v = v;
this.energie = energie;
}
public int getDurchmesser()
{
return durchmesser;
}
}
Die CollectionKlasse
Java:
public class Kanonen
extends AbstractListModel
{
private final ArrayList<Kanone> kanonenWerte = new ArrayList<Kanone>();
public Kanonen()
{
}
public void add(Kanone kan)
{
kanonenWerte.add(kan);
super.fireContentsChanged(this, kanonenWerte.size()-1, kanonenWerte.size()-1);
}
public void remove(int i)
{
kanonenWerte.remove(i);
super.fireContentsChanged(this, i, i);
}
public void removeAll()
{
kanonenWerte.removeAll(kanonenWerte);
super.fireContentsChanged(this, 0, kanonenWerte.size()-1);
}
public Kanone getWert(int i)
{
return kanonenWerte.get(i);
}
public ArrayList<Kanone> getListe()
{
return kanonenWerte;
}
public int getSize()
{
return kanonenWerte.size();
}
public Kanone getElementAt(int index)
{
return kanonenWerte.get(index);
}
}
vielleicht könnt ihr mir weiterhelfen...