Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
irgendwie fehlt mir gerade der Durchblick. In meinem Fall initialisiere ich die Variablen in einem Konstruktor, so wie unten im Beispiel. Wenn ich nun im Menü Test aufrufe sollte das Programm mir die Oberfläche meines Erachtens neu darstellen. Aber er überschreibt nur die alten Werte. Sprich sehe ich zwar die Zahl 0, aber dahinter noch den alten Wert der Variablen. Wieso, und wie kann ich das verhindern?
Code:
import java.awt.event.*;
import javax.swing.*;
class Test5 extends JFrame {
JFrame frame = new JFrame("Test");
public void testWindow(){
JMenuBar menubar = new JMenuBar();
JMenu test = new JMenu("Test");
JMenuItem test2 = new JMenuItem("TestStart");
test.add(test2);
menubar.add(test);
test2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
test2ActionPerformed(frame);
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setJMenuBar(menubar);
frame.setSize(100,100);
frame.setVisible(true);
}
public void test2ActionPerformed(JFrame f){
TestFenster abfrage = new TestFenster();
abfrage.start(f);
f.validate();
}
}
class TestFenster extends Test5 {
WeitereKlasse weitereKlasse = new WeitereKlasse();
public TestFenster(){
weitereKlasse.int = 0;
weitereKlasse.int2 = 0;
}
public void start(JFrame f){
f.add(new JButton("Aufschrift"));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,200);
setVisible(true);
//es wird im Weiteren mit int gearbeitet...
}
}
public class MainTest {
public static void main(String[] args) {
Test5 test = new Test5();
test.testWindow();
}
}
Hmm, ich gebe zu das dieses Beispiel ein wenig komplex ist für die Frage, und daher eventuell verwirrend, habe es auch mal etwas unkommentiert.
Mir geht es aber eigentlich "nur" um die Variable int + int2, welche ich im Verlauf des Programms bearbeite und beim erneuten Klick auf Test im Menü einfach auf 0 gesetzt haben will. Zur Zeit werden die Werte bei mir nur sichtbar mit 0 überschreiben.
> einfach auf 0 gesetzt haben will
+
> Zur Zeit werden die Werte bei mir nur sichtbar mit 0 überschreiben.
definiere bitte den Unterschied zwischen 'auf 0 setzen' und 'sichtbar mit 0 überschreiben'..
das TestFenster und damit das WeitereKlasse-Objekt wird in diesem Beispiel doch erst beim Button-Klick erzeugt,
du bearbeitest also keine vorhandenen Objekte
außerdem werden die beiden ints (eh falsche Syntax) im Programm nirgendwo verwendet,
WeitereKlasse ist nicht näher definiert
du hast keinen Code und (noch) keine korrekte Problembeschreibung -> ich habe noch keine Antwort
class Test extends JFrame {
JFrame frame = new JFrame("Test");
public void testWindow() {
JMenuBar menubar = new JMenuBar();
JMenu test = new JMenu("Test");
JMenuItem test2 = new JMenuItem("TestStart");
test.add(test2);
menubar.add(test);
test2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
test2ActionPerformed(frame);
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setJMenuBar(menubar);
frame.setSize(300, 300);
frame.setVisible(true);
}
public void test2ActionPerformed(JFrame f) {
TestFenster abfrage = new TestFenster();
f.add(abfrage);
f.validate();
}
}
class TestFenster extends JComponent {
WeitereKlasse weitereKlasse = new WeitereKlasse();
public TestFenster() {
weitereKlasse.test = 0;
weitereKlasse.test2 = 0;
}
public void start(JFrame f) {
setSize(400, 400);
setVisible(true);
}
public void paint(Graphics g) {
Graphics2D g2D = (Graphics2D) g;
g2D.drawString("Test:" + weitereKlasse.test, 50, 50);
g2D.drawString("Test2:" + weitereKlasse.test2, 100, 50);
weitereKlasse.method();
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
paint(g);
}
}
public class WeitereKlasse {
int test;
int test2;
public void method(){
test = 7;
test2 = 9;
}
}
Wenn ich jetzt Test im Menü aufrufe soll er mir eigentlich die alten Werte mit der Zahl null ersetzen, was für mich zurücksetzen gleich kommt. Er überschreibt aber nur die Werte, sprich sehe ich zwar die Zahl 0, aber dahinter noch den alten Wert der Variablen.
Und das will ich doch verhindern.