Endlosschleife verhindert das Schließen des Fensters

Status
Nicht offen für weitere Antworten.

Rammstein

Mitglied
Hallo Leute :)
Ich habe bereits in Google und auch hier bereits nach Lösungen gesucht, allerdings keine gefunden.
Ich habe folgendes Problem: Ich habe(wie unten gepostet) einen Java-Code, indem in Graphics ne Endlosschleife ist.
Nunja, der WindowAdapter ist ja eigentlich fürs Schließen zuständig.
Wenn man aber nun eine ENdlosschleife (wie unten ) einbaut... klappt der halt nicht !
Und ich wollte das Fenster mit dieser Endlosschleife beenden. Hat jemand eine (einfache^^) Lösung :) ?
Ich wäre sehr verbunden !
Code:
import java.awt.*;
import java.awt.event.*;
  public class Test extends Frame
  {
  public class WAdapter extends WindowAdapter
    {
    public void widowclosing (WindowEvent e)
      {
      dispose ();
      System.exit(0);
      }
    }

  public void paint (Graphics g)
    {
	  boolean running = true;
	  int i=0;
	  
		while(running)
		{
                // Hier wird irgendetwas gemacht
		}
    }


 public static void main (String args[])
      {
      Test fenster=new Test();//Hauptfenster
      fenster.setVisible (true);
      fenster.setSize(700,800);
      fenster.addWindowListener(fenster.new WAdapter());
      }
    
  }

Danke im Vorraus!
 

sol1x

Mitglied
Du müsstest das ganze in zwei verschiedenen Threads ablaufen lassen. Ob das ganze mit Java einfacher geht weiß ich allerdings nicht.
 

SebiB90

Top Contributor
In einer paint Methode schreibt man nie eine Endlosschleife!!!! Die muss so schnell wie möglich beendet werden.
 

AmunRa

Gesperrter Benutzer
Mach die Endlos schleife irgendwo in einer Anderen Methode und zeichne dort in ein Image und dieses Image zeichnest du dann mit der paint Methode auf den Bildschirm.


In der Methode kannst du dann ja nach jedem Schleifen durchlauf repaint aufrufen.
 

Rammstein

Mitglied
Mach die Endlos schleife irgendwo in einer Anderen Methode und zeichne dort in ein Image und dieses Image zeichnest du dann mit der paint Methode auf den Bildschirm.


In der Methode kannst du dann ja nach jedem Schleifen durchlauf repaint aufrufen.

Also ich bin in dem Thema nciht ganz so begabt... aber ich versteh das ungefähr so:
Code:
import java.awt.*;
import java.awt.event.*;
  public class Test extends Frame
  {
  public class WAdapter extends WindowAdapter
    {
    public void widowclosing (WindowEvent e)
      {
      dispose ();
      System.exit(0);
      }
    }

  public void paint (Graphics g)
    {
	  boolean running = true;
	  int i=0;
	  
         AnstattSchleife();
    }

 public void AnstattSchleife(){
                                       }

 public static void main (String args[])
      {
      Test fenster=new Test();//Hauptfenster
      fenster.setVisible (true);
      fenster.setSize(700,800);
      fenster.addWindowListener(fenster.new WAdapter());
      }
    
  }



Nur von "repaint" habe ich noch nie etwas gehört ! :D
Könntest du das etwas erläutern :) ?
Un dich weiß auch nciht ob du irgendwelche Variablen durchgeben willst... Deswegen habe ich einfahc mal "void" gesetzt ;)
 

Der Müde Joe

Top Contributor
So als kleines Beispiel:
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main {

   private static final int HEIGHT = 500;
   private static final int WIDTH = 200;

   public Main() {
      init();
   }

   private void init() {
      final JFrame frame = new JFrame("The bouncing Point");
      frame.setSize(WIDTH, HEIGHT);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      PointPanel pp = new PointPanel(WIDTH, HEIGHT);
      frame.getContentPane().add(pp);

      Thread thread = new Thread(new PointThread(pp));
      thread.start();
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      new Main();
   }

   public static class PointThread implements Runnable {

      private PointPanel pointPanel;

      private int speed = 2;
      private boolean upwards;

      public PointThread(PointPanel panel) {
         this.pointPanel = panel;
      }

      @Override
      public void run() {
         while (true) {
            int height = pointPanel.getHeight();

            Rectangle oldRect = pointPanel.getRectabgle();
            // change up/down
            if (oldRect.getCenterY() < (height / 4)) {
               upwards = false;
            } else if (!upwards && oldRect.getCenterY() > height - 20) {
               upwards = true;
            }
            Point oldLocation = oldRect.getLocation();

            Point newLocation;
            if (upwards) {
               newLocation = new Point(oldLocation.x, oldLocation.y - speed);
            } else {
               newLocation = new Point(oldLocation.x, oldLocation.y + speed);
            }
            Rectangle newrect = new Rectangle(newLocation, oldRect.getSize());

            pointPanel.updatePoint(newrect);
            try {
               // 50 Hz
               Thread.sleep(10);
            } catch (InterruptedException e) {
               e.printStackTrace();
            }
         }
      }
   }

   @SuppressWarnings("serial")
   public static class PointPanel extends JPanel {

      final Dimension POINT_SIZE = new Dimension(20, 20);

      // actual point
      Rectangle rect = new Rectangle(new Point(250, 400), new Dimension(20, 20));

      public PointPanel(int width, int height) {
         super();
         // start point (middle of frame bottom)
         rect = new Rectangle(new Point(width / 2 - POINT_SIZE.width / 2, height - POINT_SIZE.height), POINT_SIZE);
      }

      @Override
      public void paintComponent(Graphics g) {
         super.paintComponent(g);
         g.setColor(Color.RED);
         g.fillOval(rect.x, rect.y, rect.width, rect.height);
      }

      public void updatePoint(Rectangle newRect) {
         Rectangle updateArea = newRect.union(rect);
         rect = newRect;
         // repaint the specific area
         repaint(updateArea.x, updateArea.y, updateArea.width + 1, updateArea.height + 1);
      }

      public Rectangle getRectabgle() {
         return this.rect;
      }
   }
}

Gezeichnet wird in der paintComponent(G) --> Swing equivalent zu paint()
das repaint finder in der updatePoint-Methode statt
Die Endlosschleife in einem separaten Thread, welcher das Panel updatet

so in der kürze..
 

Der Müde Joe

Top Contributor
mal auf das Essentielle zusammengewurstelt:
Java:
//import ...
public class Main {

   public Main() {
      init();
   }

   private void init() {
	   // mach ein Frame
      final JFrame frame = new JFrame("The bouncing Point");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      // Mach ein Panel im Frame
      PointPanel pp = new PointPanel();
      frame.getContentPane().add(pp);

      // Thread mit endlosschleife
      Thread thread = new Thread(new PointThread(pp));
      thread.start();
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      new Main();
   }

   public static class PointThread implements Runnable {

      private PointPanel pointPanel;

      public PointThread(PointPanel panel) {
         this.pointPanel = panel;
      }

      @Override
      public void run() {
    	  // Endlosschleife
         while (true) {
        	 // update das Panel
            pointPanel.updatePoint();
         }
      }
   }

   @SuppressWarnings("serial")
   public static class PointPanel extends JPanel {

      public PointPanel() {}

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

      public void updatePoint() {
    	  //zeichne das Areal neu
         repaint(x, y, width , height);
      }
   }
}
 

Leroy42

Top Contributor
Ob Rammstein wohl noch die Feinheiten und vor allem
die Denkweise, die bei Arbeiten mit dem EDT (event dispatch Thread)
nötig ist, mitbekommt? :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Hilfe bei Endlosschleife Java Basics - Anfänger-Themen 2
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
noah1407 endlosschleife Java Basics - Anfänger-Themen 7
G Endlosschleife keine Rückgabe Java Basics - Anfänger-Themen 36
sserio Endlosschleife ja nein? Java Basics - Anfänger-Themen 13
javapingu Endlosschleife bei User Input mit try Scanner Java Basics - Anfänger-Themen 7
B Endlosschleife Thread sauber beenden Java Basics - Anfänger-Themen 19
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
O Endlosschleife abbrechen Java Basics - Anfänger-Themen 10
S Endlosschleife beim Ausgeben einer LinkedList Java Basics - Anfänger-Themen 2
S Interpreter-Fehler Endlosschleife zur Laufzeit aber warum? Java Basics - Anfänger-Themen 15
T Erste Schritte Endlosschleife & wozu braucht man /* und */ Java Basics - Anfänger-Themen 19
J Endlosschleife bei Try-Catch? Java Basics - Anfänger-Themen 3
S Endlosschleife - Warum? Java Basics - Anfänger-Themen 1
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
C Collatzfolge endlosschleife. Java Basics - Anfänger-Themen 4
D Array in Endlosschleife überschreibt vorherige Werte Java Basics - Anfänger-Themen 4
E Eulersche Zahl berechnen, Endlosschleife Java Basics - Anfänger-Themen 2
N Endlosschleife... Warum? Java Basics - Anfänger-Themen 12
P Kapselung Problem - Endlosschleife Java Basics - Anfänger-Themen 10
M Endlosschleife bricht durch switch ab Java Basics - Anfänger-Themen 17
D Endlosschleife und ich komme nicht raus! Java Basics - Anfänger-Themen 8
N Erste Schritte Endlosschleife und Exception Java Basics - Anfänger-Themen 5
R Endlosschleife nach InputMismatchException Java Basics - Anfänger-Themen 2
S Endlosschleife? Java Basics - Anfänger-Themen 2
T Endlosschleife Java Basics - Anfänger-Themen 2
Z Endlosschleife Java Basics - Anfänger-Themen 6
T Endlosschleife Java Basics - Anfänger-Themen 12
H Wieso ist das eine Endlosschleife? Java Basics - Anfänger-Themen 8
StupidAttack Endlosschleife, Sockets Java Basics - Anfänger-Themen 2
C ungewollte Abbrüche in einer Endlosschleife Java Basics - Anfänger-Themen 6
E komische endlosschleife Java Basics - Anfänger-Themen 6
7 Endlosschleife pausieren Java Basics - Anfänger-Themen 11
F .readLine() erzeugt endlosschleife Java Basics - Anfänger-Themen 4
R Wieso hänge ich hier in einer Endlosschleife (vermute ich zumindest)? Java Basics - Anfänger-Themen 2
F Falscheingabe abfangen - Endlosschleife Java Basics - Anfänger-Themen 5
R warum endlosschleife? Java Basics - Anfänger-Themen 7
W Fakultät, warum Endlosschleife? Java Basics - Anfänger-Themen 15
S JTable Endlosschleife Java Basics - Anfänger-Themen 5
J Aus endlosschleife kommen Java Basics - Anfänger-Themen 5
Povlsen84 Endlosschleife Java Basics - Anfänger-Themen 5
V Bubble Sort endet in Endlosschleife Java Basics - Anfänger-Themen 4
Antoras Endlosschleife Java Basics - Anfänger-Themen 8
J Wartezustand in Endlosschleife - bessere Alternativen Java Basics - Anfänger-Themen 20
H Problem beim Einlesen einer Datei (Endlosschleife ?) Java Basics - Anfänger-Themen 3
N Endlosschleife? Java Basics - Anfänger-Themen 3
V mehrere Threads starten + Endlosschleife Java Basics - Anfänger-Themen 3
I Hilfe wer findet mein Fehler in bei der Endlosschleife Java Basics - Anfänger-Themen 7
G Sound/Endlosschleife/Abbruchproblem Java Basics - Anfänger-Themen 3
G HappyNumbers - Endlosschleife Java Basics - Anfänger-Themen 11
0 Endlosschleife beim Integer Array mischen? Java Basics - Anfänger-Themen 3
M OutputStream funktioniert nur in Endlosschleife ? Java Basics - Anfänger-Themen 4
G Endlosschleife, aber warum? Java Basics - Anfänger-Themen 12
G Endlosschleife beenden Java Basics - Anfänger-Themen 10
J Variablen Array aus anderer Klasse auslesen-Wie verhindert man eine NullPointerException? Java Basics - Anfänger-Themen 4
S Dateityp verhindert Positionswechsel Java Basics - Anfänger-Themen 20
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
T jOptionPane zum schließen von Fenster, wie "Ja" und "Nein" anstatt Yes und No Java Basics - Anfänger-Themen 2
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
F Terminal Windows per Befehl schließen? Java Basics - Anfänger-Themen 9
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
F Java Programm schließen Java Basics - Anfänger-Themen 1
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R Eine Schleife durch eine Methode schließen? Java Basics - Anfänger-Themen 4
J Seite öffnen und schließen Java Basics - Anfänger-Themen 2
b1ck Scanner schließen, erneute Verwendung Java Basics - Anfänger-Themen 12
A Input/Output Datenströme schließen in eigener Methode Java Basics - Anfänger-Themen 5
H Klassen Von Instanzvariablen auf Instanz schließen Java Basics - Anfänger-Themen 21
D JFrame - 10 Sekunden bis zum schließen warten. Java Basics - Anfänger-Themen 2
A Dialog schließt erst nach 2x Klicken auf Schließen Java Basics - Anfänger-Themen 2
K Methoden Schließen eines Fensters Java Basics - Anfänger-Themen 8
H JFrame komplett schließen Java Basics - Anfänger-Themen 3
J Socket schließen - Ist eine SocketException unumgänglich? Java Basics - Anfänger-Themen 4
X JFrame Fenster einzeln schließen Java Basics - Anfänger-Themen 2
D JDialog schließen Java Basics - Anfänger-Themen 11
L Schließen von Fenstern über Standartfunktion (X) Java Basics - Anfänger-Themen 11
F Erste Schritte Aktuelles Fenster durch Event schließen Java Basics - Anfänger-Themen 3
1 Programm schließen und Neustarten Java Basics - Anfänger-Themen 5
S Konsole schließen, nachdem Jar läuft Java Basics - Anfänger-Themen 5
T JFrame per Taste schließen Java Basics - Anfänger-Themen 15
M Erste Schritte Probleme mit Fenster Schließen Java Basics - Anfänger-Themen 6
S Fenster richtig schließen Java Basics - Anfänger-Themen 8
JAVAnnik Anwendung nach Schließen vom letzen Frame Java Basics - Anfänger-Themen 9
S nur neu geöffnetes Fenster schließen Java Basics - Anfänger-Themen 3
D Beim schließen --> Speichern?? Java Basics - Anfänger-Themen 11
T Windows Fenster Schließen Java Basics - Anfänger-Themen 4
F Textfenster lässt sich nicht schließen Java Basics - Anfänger-Themen 3
0 FireFox aus Java Applikation schließen Java Basics - Anfänger-Themen 10
J Fenster schließen? Java Basics - Anfänger-Themen 4
M Befehl zum Fenster schließen? GUI Java Basics - Anfänger-Themen 3
S Programm gestartet - nun schließen? Java Basics - Anfänger-Themen 5
C try finally - Streams schließen Java Basics - Anfänger-Themen 7
B Java Fenster schließen Java Basics - Anfänger-Themen 2
J Frame schließen, Ereignis behandeln, Vorgang abbrechen Java Basics - Anfänger-Themen 4
Luk10 Frame schließen Java Basics - Anfänger-Themen 2
F festlegen, was beim schließen des fensters passiert Java Basics - Anfänger-Themen 12
A Frame schließen!? Help! Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben