Hallo. Ich habe folgendes Programm:
Ich übergebe der Klasse Test2 einmal ein Boolean und einmal einen Vector aus Test, verändere beide dann durch Druck auf die Leerzeichen-Taste und lasse deren Werte einmal aus Test und einmal aus Test2 ausgeben. Nun das Problem: Wenn ich den Vector in Test vergrößere vergrößert dieser sich auch in Test2. Der Boolean allerdings verändert sich nur in Test und NICHT in Test2, was ich aber möchte.
Hier ein Auszug aus der Ausgabe des Programms.
"Key Pressed Test: false
Vector Size Test: 0
Key Pressed Test2: false
Vector Size Test2: 0
Key Pressed Test: false
Vector Size Test: 1
Key Pressed Test2: false
Vector Size Test2: 1
Key Pressed Test: true
Vector Size Test: 1
Key Pressed Test2: false
Vector Size Test2: 1"
Wie man sieht ist die Größe der Vektoren in beiden Klassen immer gleich, die Werte der Boolean aber nicht. Warum ist das so und wie schaffe ich es dass auch der Boolean in beiden Klassen gleich ist?
Hier der Code:
Klasse Test:
Klasse Test2:
Ich übergebe der Klasse Test2 einmal ein Boolean und einmal einen Vector aus Test, verändere beide dann durch Druck auf die Leerzeichen-Taste und lasse deren Werte einmal aus Test und einmal aus Test2 ausgeben. Nun das Problem: Wenn ich den Vector in Test vergrößere vergrößert dieser sich auch in Test2. Der Boolean allerdings verändert sich nur in Test und NICHT in Test2, was ich aber möchte.
Hier ein Auszug aus der Ausgabe des Programms.
"Key Pressed Test: false
Vector Size Test: 0
Key Pressed Test2: false
Vector Size Test2: 0
Key Pressed Test: false
Vector Size Test: 1
Key Pressed Test2: false
Vector Size Test2: 1
Key Pressed Test: true
Vector Size Test: 1
Key Pressed Test2: false
Vector Size Test2: 1"
Wie man sieht ist die Größe der Vektoren in beiden Klassen immer gleich, die Werte der Boolean aber nicht. Warum ist das so und wie schaffe ich es dass auch der Boolean in beiden Klassen gleich ist?
Hier der Code:
Klasse Test:
Java:
package test;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test extends JPanel implements KeyListener{
private JFrame frame;
private boolean key_pressed = false;
Vector<Test2> vector = new Vector<Test2>();
private Test2 test2 = new Test2(key_pressed, vector);
public Test() {
frame = new JFrame();
setPreferredSize(new Dimension(400, 400));
addKeyListener(this);
setFocusable(true);
requestFocus();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.pack();
frame.setVisible(true);
while(true) {
System.out.println("Key Pressed Test: " + key_pressed);
System.out.println("Vector Size Test: " + vector.size());
test2.Test_key_pressed();
}
}
public static void main(String[] args) {
new Test();
}
@Override
public void keyPressed(KeyEvent ke) {
int k = ke.getKeyCode();
if(k == KeyEvent.VK_SPACE) {
key_pressed = true;
}
vector.add(new Test2());
}
@Override
public void keyReleased(KeyEvent ke) {
int k = ke.getKeyCode();
if(k == KeyEvent.VK_SPACE) {
key_pressed = false;
}
}
@Override
public void keyTyped(KeyEvent ke) {
}
}
Klasse Test2:
Java:
package test;
import java.util.Vector;
public class Test2 {
private boolean key_pressed;
private Vector<Test2> vector;
public Test2() {
}
public Test2(boolean key_pressed, Vector<Test2> vector) {
this.key_pressed = key_pressed;
this.vector = vector;
}
public void Test_key_pressed() {
System.out.println("Key Pressed Test2: " + key_pressed);
System.out.println("Vector Size Test2: " + vector.size());
}
}