Also ich habe ein Programm geschrieben das abhängig von den Eingaben an der Gui Grafiken malt. Die Berechnung der Daten dazu findet in der Gui statt. Diese ruft das die Klasse des Zeichenbrettes auf damit die eigentliche Zeichnung hergestellt wird.
So nun kriege ich es nicht hin, das die Gui nach jedem Zeichnen eine Pause macht und nur das Zeichnen abbricht wenn der Benutzer z.B. eine Taste drückt. Habe bisher auch noch nie was mit Threads zu tun gehabt und somit keine Erfahrung damit.
Habe das Programm radiakel gekürzt und nur die relevanten Dinge dargestellt.
Wüde wenn gerne die Gui komplett als Thread haben. Habe aber keine Ahnung wie ich es umsetzten soll das der Thread nach wie vor auf die Eingaben des Benutztrs reagiert, vor allem da ich diese ja nicht vorhersehen kann.
Worum es hier geht ist folgendes. Der Benutzer drückt einen BUtton und läd eine Grafik bestehend aus einen von ihm gewählten file. In diesem File stehen spezielle Daten drin die nun geladen werden. Diese sollen nun auotamisch komplett bearbeitet werden. Dabei soll das Bild langsam nämlich Strich für Strich entstehen. Zudem soll das Zeichnen auch komplett abgebrochen werden können, ohne das das Programm beendet wird.
Habe verschiedenste Dinge ausprobiert und nichts hat mich weitergebracht. Wenn dann wartete das Programm zwar, malte aber nichts und malte dann am ende alles auf einmal.
Bin für jede Hilfe, Idee oder Anregung dankbar.
Klasse des Zeichenbrettes
So nun kriege ich es nicht hin, das die Gui nach jedem Zeichnen eine Pause macht und nur das Zeichnen abbricht wenn der Benutzer z.B. eine Taste drückt. Habe bisher auch noch nie was mit Threads zu tun gehabt und somit keine Erfahrung damit.
Habe das Programm radiakel gekürzt und nur die relevanten Dinge dargestellt.
Wüde wenn gerne die Gui komplett als Thread haben. Habe aber keine Ahnung wie ich es umsetzten soll das der Thread nach wie vor auf die Eingaben des Benutztrs reagiert, vor allem da ich diese ja nicht vorhersehen kann.
Worum es hier geht ist folgendes. Der Benutzer drückt einen BUtton und läd eine Grafik bestehend aus einen von ihm gewählten file. In diesem File stehen spezielle Daten drin die nun geladen werden. Diese sollen nun auotamisch komplett bearbeitet werden. Dabei soll das Bild langsam nämlich Strich für Strich entstehen. Zudem soll das Zeichnen auch komplett abgebrochen werden können, ohne das das Programm beendet wird.
Habe verschiedenste Dinge ausprobiert und nichts hat mich weitergebracht. Wenn dann wartete das Programm zwar, malte aber nichts und malte dann am ende alles auf einmal.
Bin für jede Hilfe, Idee oder Anregung dankbar.
Code:
public class Gui extends JFrame implements Runnable{
Zeichenbrett z;
public Gui(){
super("Titel");
z = new Zeichenbrett();
Thread th = new Thread (this);
th.start();
}
public void run(){
while (true){
}
}
public void laden(){
//Daten werden geladen und stehen als Liste in eingabe
while(eingabe.hasNext()){
//Werte abhängig von eingabe berechnet,setzt Daten in Gui um
zeichnen();
//soll dann hier eigentlich kurz warten damit der Benutzer das Bild langsam entstehen sieht
und das zeichnen abbrechen kann
}
}
public void zeichnen(){
//Wandelt Koordinaten um etc.
z.linieMalen(x,y,next.x,next.y);
z.repaint();
}
}
Klasse des Zeichenbrettes
Code:
public class Zeichenbrett extends JPanel {
private Graphics2D offlineG;
private BufferedImage offlineImg;
public Zeichenbrett(){
this.setBackground(Color.white);
this.setPreferredSize(new Dimension(2000,1500));
this.offlineImg = new BufferedImage(2000,1500,BufferedImage.TYPE_INT_RGB);
this.offlineG = this.offlineImg.createGraphics();
}
public void linieMalen(int x,int y,int nextx, int nexty){
offlineG.drawLine(x,y,nextx,nexty);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(this.offlineImg, null, 0, 0);
}
}