boolean stellt sich auf true

hallo
Ich habe ein Programm geschrieben, dass ein Koordinatensystem anzeigt( Aktueller Stand siehe Bild).problembild.png

Jetzt Möchte ich Programmieren, dass man in diesem System linien malen kann. Das Problem ist, dass der beginn der Linie immer bei 0,0 liegt.
Ich konnte das Problem darauf eingrenzen, dass die Variabele ready sich immer auf true stellt. Ich habe auch schon per steuerung f im Programm nach irgendwelchen zeilen gesucht die so nicht sein sollten und das ganze auf true stellen konnte aber nichts finden.
Hier die beiden klassen die sehr wahrscheinlich das Problem darstellen:
Code:
public class Draw extends JLabel{

    
    static boolean pressed = false;
    static boolean paused = false;
    static int x ,y;
    static int pX,pY,ptX,ptY;
    static boolean ready = false;
    static int color;//1 = red; 2 = green; 3 = blue
    
    int[] paintX = new int[200];
    int[] paintY = new int[200];
    int[] paintX2 = new int[200];
    int[] paintY2 = new int[200];
    int[] colors = new int[200];
    
    static boolean found;
    
protected void paintComponent(Graphics g) {
        
        super.paintComponent(g);

        //background
        g.setColor(Color.LIGHT_GRAY);
        g.fillRect(0, 0, 1000, 1000);
        
        //field lines
        
        g.setColor(Color.black);
        
        for(int i = 0; i<9;i++) {
            
            g.drawLine(200 + i * 200,0,200+i * 200,1000);
            
            g.drawLine(0, 200 + i * 200, 1000, 200 + i * 200);
        }
        
        //Say cordi
        if(pressed && paused == false) {
        if(y < 59)
            g.drawString(""+x +", "+y, x-30, y+25);
        else
        g.drawString(""+x +", "+y, x-30, y-50);
        }
        
        //paint
        
        if(ready == false) {
        if(color == 1) {
        g.setColor(Color.red);
        }
        if(color == 2) {
        g.setColor(Color.green);
        }
        if(color == 3) {
        g.setColor(Color.blue);
        }
        g.drawLine(pX,pY,ptX,ptY);
        }
        
        for(int i = 0;i<200;i++) {
            
            if(colors[i] == 0) {
                
                if(found == false && ready == false) {
                paintX[i] = pX;
                paintY[i] = pY;
                paintX2[i] = ptX;
                paintY2[i] = ptY;
                colors[i] = color;
                }
                
            }
            else {
                if(colors[i] == 1) {
                    g.setColor(Color.red);
                    }
                    if(colors[i] == 2) {
                    g.setColor(Color.green);
                    }
                    if(colors[i] == 3) {
                    g.setColor(Color.blue);
                    }
                    g.drawLine(paintX[i],paintY[i],paintX2[i],paintY2[i]);
                
            }
        }
        
        
        
        //paused
        
        if(paused) {
            
            g.setColor(Color.gray);
            g.fillRect(0,0,1000,1000);
            
            g.setColor(Color.black);
            Font arial = new Font("Arial",Font.BOLD,50);
            g.setFont(arial);
            g.drawString("press any Button to continue", 130, 400);
            
            
        }
        
        repaint();

}
}

public void mouseClicked(MouseEvent e) {
    
        if (SwingUtilities.isRightMouseButton(e)) {
            
            Draw.paused = true;
            new Gui();
            
        }
        
    }

    
    public void mousePressed(MouseEvent e) {
    
        
        
    }

    
    public void mouseReleased(MouseEvent e) {
        
        if(Draw.ready = false) {
        Draw.pX = e.getX();
        Draw.pY = e.getY();
        System.out.println(""+ e.getX()+", " + e.getY());
        Draw.ready = true;
        }
        else {
            
            System.out.println("second"+ e.getX()+", " + e.getY());
            Draw.ptX = e.getX();
            Draw.ptY = e.getY();
            Draw.ready = false;
        }
        
    }

    
    public void mouseEntered(MouseEvent e) {
        Draw.pressed = true;
    }

    
    public void mouseExited(MouseEvent e) {
        Draw.pressed = false;
    }

}

Schonmal Vielen dank für eure hilfe.
 

fhoffmann

Top Contributor
Ich habe deien Code nicht komplett angeguckt. Verdächtig kommt mir vor, dass du so viele static-Variablen hast. Das ist normalerweise nicht nötig.
Ein klarer Fehler liegt hier vor:
if(Draw.ready = false)
Ein einfaches Gleichheitszeichen ist eine Zuweisung und kein Vergleich.
Solche Fehler kannst du vermeiden, wenn du stattdessen schreibst
Code:
if(!Draw.ready)
 
oh ja tatsächlich, da habe ich nen fehler gemacht. Das habe ich nicht extra nachgeschaut weil ich gedacht gabe der zeigt mir sowas an.
Danke für die schnelle hilfe.
 

MoxxiManagarm

Top Contributor
Ich verstehe dein Problem ehrlich gesagt nicht ganz. Aber die Stelle kommt mir schon verdächtig vor:
Java:
public void mouseEntered(MouseEvent e) {
        Draw.pressed = true;
    }

mouseEntered ist, wenn der Mauszeiger die Komponente "betritt". Sollte diese Zeile nicht eher in mousePressed?
 

MoxxiManagarm

Top Contributor
Eventuell hilft dir diese kleine Demo:

Java:
public class LinesDemo extends JFrame {
    public LinesDemo() {
        setTitle("Lines Demo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        add(new LinesCanvas());

        pack();
    }

    private class LinesCanvas extends JComponent {
        private List<Line2D.Double> lines = new ArrayList<>();
        private Line2D.Double line;

        protected LinesCanvas() {
            setPreferredSize(new Dimension(500, 500));

            addMouseMotionListener(new MouseAdapter() {
                @Override
                public void mouseDragged(MouseEvent e) {
                    line.setLine(line.getP1(), e.getPoint());
                    repaint();
                }
            });

            addMouseListener(new MouseAdapter() {
                @Override
                public void mousePressed(MouseEvent e) {
                    line = new Line2D.Double(e.getPoint(), e.getPoint());
                }

                @Override
                public void mouseReleased(MouseEvent e) {
                    lines.add(line);
                    line = null;
                }
            });
        }

        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);

            Graphics2D g2d = (Graphics2D)g;
            g2d.setColor(Color.BLACK);

            for (Line2D.Double iter : lines) {
                g2d.draw(iter);
            }
            if (line != null) {
                g2d.draw(line);
            }
        }
    }

    public static void main(String... args) {
        SwingUtilities.invokeLater(() -> new LinesDemo().setVisible(true));
    }
}
 
Mein eigentliches Problem habe ich dank fhoffmann schon gelößt. Die Variabele heißt zwar pressed, aber nur weil ich die schon für was anderes deklariert hatte, dann aber nichtmehr brauchte und weil das Programm auch nicht so kompliziert ist keine lust hatte die noch zu verändern.
Die sorgt daür, dass wenn der zeiger das fenster verlässt, dass die koordinaten,die sich über meinem Mauszeiger befinden verschwinden.
Trotzdem danke für die Demo, da waren ein paar sachen drin die ich bisher viel umständlicher gemacht habe ;)
 

temi

Top Contributor
Du solltest in Zukunft auf jeden Fall auf "static" verzichten. Die braucht man in den seltensten Fällen und auf diese sollte es auch beschränkt bleiben. D.h. dein nächstes Programm hat nur eine static Methode und das ist die main().
 
Du solltest in Zukunft auf jeden Fall auf "static" verzichten. Die braucht man in den seltensten Fällen und auf diese sollte es auch beschränkt bleiben. D.h. dein nächstes Programm hat nur eine static Methode und das ist die main().

Mein Problem, weshalb ich die Variabelen static gemacht habe ist, dass ich die Variabelen von anderen Klassen verändere und wenn die Variabelen nicht static sind gibt der mir einen error aus.
 

temi

Top Contributor
Mein Problem, weshalb ich die Variabelen static gemacht habe ist, dass ich die Variabelen von anderen Klassen verändere und wenn die Variabelen nicht static sind gibt der mir einen error aus.
Das sind allerdings Designfehler. Wenn du den Zustand einer Klasse ändern oder darauf zugreifen willst, dann stelle entsprechende Methoden dafür bereit. "Static" hat damit allerdings weniger zu tun, eher etwas mit Zugriffsmodifikatoren.
 

temi

Top Contributor
Mit dem Schlüsselwort "static" machst du aus einer Instanzvariablen eine Klassenvariable. Während bei einer Instanzvariablen der zugewiesene Wert für jede Instanz der Klasse ein anderer sein kann, hat eine Klassenvariable für alle Instanzen der Klasse den selben Wert. Siehe auch hier, oberer Teil des Beitrags: https://www.java-forum.org/thema/va...-nicht-korrekt-uebergeben.187838/post-1217478

Du kannst (und solltest) das gerne auch mal ausprobieren:
Java:
public class Foo {
    public int nonStaticVar; // Instanzvariable
    public static int staticVar; // Klassenvariable
}

Java:
public static void main(String[] args) {

    Foo foo1 = new Foo();
    Foo foo2 = new Foo();

    foo1.nonStaticVar = 12;
    foo1.staticVar = 34; // hier sollte besser Foo.staticVar stehen, aber dies dient zur Verdeutlichung

    System.out.println(foo1.nonStaticVar);
    System.out.println(foo1.staticVar);

    foo2.nonStaticVar = 56;
    foo2.staticVar = 78; // hier sollte besser Foo.staticVar stehen, aber dies dient zur Verdeutlichung

    System.out.println(foo1.nonStaticVar);
    System.out.println(foo1.staticVar);
    System.out.println(foo2.nonStaticVar);
    System.out.println(foo2.staticVar);
}
 
Ach so jetzt habe ichs verstanden. Ich habe bisher noch garnicht mit verschiedenen Instanzen gearbeitet, weshalb ich das problem an static auch nicht verstanden habe. Klingt aber eigentlich logisch. Welchen vorteil gibt es denn wenn man mit mehreren Instanzen arbeitet? Kann man dann zwischen denen wechseln?
 

temi

Top Contributor
Welchen vorteil gibt es denn wenn man mit mehreren Instanzen arbeitet?
I.d.R. arbeitet man immer mit Instanzen von Klassen und mehrere Instanzen einer Klasse hast du immer, wenn es mehr als ein "Ding" von dieser Klasse in deinem Programm gibt. Hm, klingt jetzt irgendwie dumm ;)

Nehmen wir einfach platt die Klasse Auto. Wenn du einen Parkplatz modellierst, der mehrere Autos enthalten kann, dann schreibst du ja nicht für jedes Auto eine Klasse (class Auto1, class Auto2, class Auto3) sondern instantiierst einfach mehrere Autos.
Java:
Parkplatz parkplatz = new Parkplatz();
for (int i = 0; i < 10; i++) {
    parkplatz.add(new Auto(i)); // wir unterstellen mal einen Auto-Konstuktor der ein int entgegennimmt
}

// anschließend enthält der Parkplatz 10 Autos

Kann man dann zwischen denen wechseln?
Man kann vieles, was auch immer du damit meinst.


Versuch dein Programm erst mal so zu schreiben, dass das einzige "static" bei der main() steht. Dann bist du auf dem richtigen Weg.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
C Java boolean Code läuft nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 4
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
B Rückgabewert boolean Java Basics - Anfänger-Themen 8
J Compiler-Fehler Harshadzahlen mit Boolean Java Basics - Anfänger-Themen 4
J boolean aufgabe Java Basics - Anfänger-Themen 9
A Boolean Java Basics - Anfänger-Themen 5
C Ausgabe boolean return ((n==9)||(n==0)); Java Basics - Anfänger-Themen 13
J Boolean[] teilen Java Basics - Anfänger-Themen 13
S public static boolean Java Basics - Anfänger-Themen 4
R Boolean Methode Rückgabewert if() Java Basics - Anfänger-Themen 1
G Rekursive Methode liefert augenscheinlich keinen boolean-Wert zurück. Java Basics - Anfänger-Themen 4
kazzam94 Methode soll Array von Boolean zurückgeben Java Basics - Anfänger-Themen 5
L Überschriebene Boolean Statements Java Basics - Anfänger-Themen 2
L boolean-Abfrage enumeration Java Basics - Anfänger-Themen 3
A Ausgabe mit boolean Java Basics - Anfänger-Themen 3
R Boolean value ohne Kontrollstrukturen ändern Java Basics - Anfänger-Themen 5
V Boolean Wert nicht richtig erkannt Java Basics - Anfänger-Themen 4
Kirby.exe ArrayOutOfBoundsException bei boolean Array Java Basics - Anfänger-Themen 19
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
I converting boolean Array to String Array Java Basics - Anfänger-Themen 10
C Java Boolean reagiert nicht Java Basics - Anfänger-Themen 18
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
F Boolean Methode Wert ausgeben. Java Basics - Anfänger-Themen 2
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
K Boolean in einer erstellten Klasse verwenden Java Basics - Anfänger-Themen 14
X Erste Schritte boolean wert ändert sich nicht? Java Basics - Anfänger-Themen 6
W Problem mit dem Wert von boolean-Variable Java Basics - Anfänger-Themen 3
P Array Sortieren mit boolean? Java Basics - Anfänger-Themen 33
A Boolean in String Java Basics - Anfänger-Themen 2
S Operatoren Boolean Vergleichsoperator Java Basics - Anfänger-Themen 7
Queiser Super boolean Java Basics - Anfänger-Themen 11
E ISBN Nummer mit boolean Java Basics - Anfänger-Themen 5
W In Methode boolean array zurückgeben Java Basics - Anfänger-Themen 3
B Math.random mit Boolean array? Java Basics - Anfänger-Themen 17
Z Boolean Abfrage in einer for each Schleife Java Basics - Anfänger-Themen 2
T Methoden Boolean wird nicht gesetzt Java Basics - Anfänger-Themen 1
H boolean Array Problem Java Basics - Anfänger-Themen 7
S boolean Wert von mehreren int Möglichkeiten abfragen ? Java Basics - Anfänger-Themen 4
J Problem mit Boolean bei Funktion! Java Basics - Anfänger-Themen 5
O boolean Array Frage! Java Basics - Anfänger-Themen 4
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
M Erste Schritte while boolean=false läuft nur bei true??? Java Basics - Anfänger-Themen 23
D Boolean Array initialisieren Java Basics - Anfänger-Themen 4
M Datentypen Byte, Float und Boolean Java Basics - Anfänger-Themen 13
A Problem beim Deklarieren von einem BOOLEAN Java Basics - Anfänger-Themen 4
W Interpreter-Fehler boolean nur eins darf wahr sein Java Basics - Anfänger-Themen 11
G Wie kann man den Erfolg einer Zuweisung als Boolean Wert verwenden? Java Basics - Anfänger-Themen 12
K Problem mit Methode(Array,Boolean,ForSchleife) Java Basics - Anfänger-Themen 6
V Methode erstellen für ein Boolean Array Java Basics - Anfänger-Themen 13
T Boolean by Reference Java Basics - Anfänger-Themen 6
L Wertebereich von boolean Java Basics - Anfänger-Themen 4
D Erklärung static boolean Java Basics - Anfänger-Themen 6
T Eine String Matrix erstellen die eine boolean Funtion verwendet Java Basics - Anfänger-Themen 10
J Datentypen Boolean Refferenz Objekt Java Basics - Anfänger-Themen 2
A boolean Methode ohne If und else Java Basics - Anfänger-Themen 1
fLooojava Laufender Thread | Boolean ändern Java Basics - Anfänger-Themen 9
T Boolean Missing return Statement?! Java Basics - Anfänger-Themen 2
A Boolean aus dem ActionlListener Java Basics - Anfänger-Themen 1
T hashCode mit boolean Java Basics - Anfänger-Themen 1
T boolean, was passiert hier? Java Basics - Anfänger-Themen 4
M Sind solche boolean Anweisen empfehlenswert? Java Basics - Anfänger-Themen 3
N Boolean Werte - immer "false" Java Basics - Anfänger-Themen 5
J GUI per Boolean steuern Java Basics - Anfänger-Themen 3
F Effizientes Lesen von 65 Datein mit Boolean Werten Java Basics - Anfänger-Themen 6
K Viergewinnt - boolean Problem Java Basics - Anfänger-Themen 2
S Best Practice Boolean mit IF verbinden Java Basics - Anfänger-Themen 7
D Boolean mit String Java Basics - Anfänger-Themen 2
K Methode ohne Rückgabewert in boolean Methode ändern Java Basics - Anfänger-Themen 6
E 2 dimensionales Boolean Array Java Basics - Anfänger-Themen 5
B assertArrayEquals nicht für boolean[]? Java Basics - Anfänger-Themen 2
M !boolean das selbe wie boolean == false? Java Basics - Anfänger-Themen 3
L Boolean Methode wirft Fehler aus Java Basics - Anfänger-Themen 12
M Erste Schritte boolean: ist Zahl Hexadezimal - Lösung verwirrend Java Basics - Anfänger-Themen 6
F Datentypen Frage nach Boolean Java Basics - Anfänger-Themen 11
C Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 20
B Boolean abfrage Java Basics - Anfänger-Themen 3
L The operator && is undefined for the argument type(s) String, boolean Java Basics - Anfänger-Themen 8
L Methoden Boolean-Methode Java Basics - Anfänger-Themen 16
S Setter Methode von Boolean Java Basics - Anfänger-Themen 11
W Datentypen Zweidimensionales Boolean Array Java Basics - Anfänger-Themen 13
P Compiler-Fehler Boolean: Missing Return Statement Java Basics - Anfänger-Themen 4
M int & boolean Java Basics - Anfänger-Themen 12
feardorcha boolean array false - true - Abfrage Java Basics - Anfänger-Themen 10
R boolean, if-else Java Basics - Anfänger-Themen 7
J Variablen Boolean true "übersetzen" in String Java Basics - Anfänger-Themen 10
M Meldung "cannot convert flom boolean to boolean[]" Java Basics - Anfänger-Themen 3
S Name eines boolean ausgeben (nicht den Wert) Java Basics - Anfänger-Themen 43
S Variablen Prüfen, ob einer von vielen boolean true ist Java Basics - Anfänger-Themen 8
D boolean te wird nicht verwendet Java Basics - Anfänger-Themen 2
M Bedingte Anweisung mit Boolean Java Basics - Anfänger-Themen 2
C cannot convert from int to boolean Java Basics - Anfänger-Themen 3
T Variablen boolean-wert wird nicht gesetzt Java Basics - Anfänger-Themen 6
A In Methode boolean ändern Java Basics - Anfänger-Themen 2
D Java Einsteiger (boolean, if-else etc.) Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben