[Java] Threads Ein- und Ausschalten

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Toxx1n, 20. Februar 2011 .

  1. 20. Februar 2011
    Threads Ein- und Ausschalten

    Hey Leute,

    habe hier ein Programm mit dem man ein beliebiges Vieleck Zeichnen kann. Anzahl der Ecken kann man mit einem Schieberegler einstellen. Jetzt würde ich gerne die möglichkeit einfügen ein Delay zu aktivieren. Das stelle ich mir so vor, dass man ein kleines Feld hat in das man einen Haken setzen kann, quasi Delay Aktiv/Inaktiv. Hat dazu jemand eine Idee? Habe bisher nur den Thread Ansatz aber wie ich dazu ein Feld mache um es zu aktivieren bzw. deaktivieren ist mir noch ein Rätsel, ich hoffe das mir da jemand helfen kann?
    Code:
     try {
     Thread.sleep(15);
     } catch (InterruptedException e) {
     }
    Kompletter Code:
    Code:
    package ProjektJavaApplettKreise;
    
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import java.util.*;
    
    public class projektJava extends JApplet {
    
     JSlider jSlider = new JSlider();
     public int sValue;
    
     public void init() {
     Container cp = getContentPane();
     cp.setLayout(null);
     cp.setBounds(0, 0, 500, 500);
     setSize(501, 501);
     cp.setBackground(new Color(255, 255, 255));
     jSlider.setMinimum(2);
     jSlider.setMaximum(50);
     jSlider.setValue(3);
     jSlider.setMinorTickSpacing(1);
     jSlider.setMajorTickSpacing(4);
     jSlider.setPaintTicks(true);
     jSlider.setPaintLabels(true);
     jSlider.setBounds(2, 2, 501, 60);
     sValue = jSlider.getValue();
     jSlider.addChangeListener(new ChangeListener() {
    
     public void stateChanged(ChangeEvent evt) {
     jSlider_stateChanged(evt);
     }
     });
     cp.add(jSlider);
     this.setVisible(true);
     }
    
     public void jSlider_stateChanged(ChangeEvent evt) {
     sValue = jSlider.getValue();
     repaint();
     }
    
     public void paint(Graphics g) {
     super.paint(g);
     Random r = new Random();
     int punktzahl = sValue;
     g.setColor(new Color(0, 0, 0));
     double[][] arr = new double[punktzahl][2];
     double winkel = (2 * Math.PI) / punktzahl;
     for (int i = 0; i < arr.length; i++) {
     arr[i][0] = (Math.cos(i * winkel)) * 200;
     arr[i][1] = (Math.sin(i * winkel)) * 200;
     }
     int[][] x = new int[arr.length][2];
     for (int i = 0; i < arr.length; i++) {
     x[i][0] = (int) arr[i][0] + 250;
     x[i][1] = (int) arr[i][1] + 260;
     }
     for (int i = 0; i < arr.length; i++) {
     for (int j = 0; j < arr.length; j++) {
     g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
     g.drawLine(x[i][0], x[i][1], x[j][0], x[j][1]);
    [COLOR="Red"] try {
     Thread.sleep(15);
     } catch (InterruptedException e) {
     }[/COLOR]
     }
     }
     }
    }
    
     
  2. 20. Februar 2011
    AW: Threads Ein- und Ausschalten

    Haja, passt doch so.

    Musst dann nur noch die Variable einlesen, wie lange der Thread pausiert werden soll.
    Und wenn dus noch mit nem Haken machen willst, musst diese checkbox vorher überprüfen.

    Oder ist mir dein Problem noch nicht ganz ersichtlich?
     
  3. 20. Februar 2011
    AW: Threads Ein- und Ausschalten

    Die Grafik soll nur dann Zeitverzögert aufgebaut werden wenn der Haken gesetzt ist. Doch wie ich solch eine "Checkbox?" programmiere weiß ich leider nicht, habe dazu auch in sämtlichen Büchern nichts konkretes gefunden.
     
  4. 20. Februar 2011
    AW: Threads Ein- und Ausschalten

    Code:
    JCheckBox check[COLOR="Red"]box[/COLOR] = new JCheckBox("blabla?", false);
    JTextField sekunden = new JTextField("");//Textfeld fuer die Dauer der Pausen
    
    
     public void paint(Graphics g) {
     super.paint(g);
     Random r = new Random();
     int punktzahl = sValue;
     g.setColor(new Color(0, 0, 0));
     double[][] arr = new double[punktzahl][2];
     double winkel = (2 * Math.PI) / punktzahl;
     for (int i = 0; i < arr.length; i++) {
     arr[i][0] = (Math.cos(i * winkel)) * 200;
     arr[i][1] = (Math.sin(i * winkel)) * 200;
     }
     int[][] x = new int[arr.length][2];
     for (int i = 0; i < arr.length; i++) {
     x[i][0] = (int) arr[i][0] + 250;
     x[i][1] = (int) arr[i][1] + 260;
     }
     for (int i = 0; i < arr.length; i++) {
     for (int j = 0; j < arr.length; j++) {
     g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
     g.drawLine(x[i][0], x[i][1], x[j][0], x[j][1]);
     if(checkbox.isSelected() == true){//Wenn die Checkbox gecheckt ist
     try {
     Thread.sleep(sekunden.getText());//Hier musste noch aufpassen das keine Fehler eingelesen werden Buchstaben etc. sondern nur Zahlen
     } catch (InterruptedException e) {
     }}
     }
     }
     }
    
    Sry, hab den Fehler rausgebügelt, kommt davon wenn man sich alles zusammenkopiert ^^
     
  5. 20. Februar 2011
    AW: Threads Ein- und Ausschalten

    Bekomme in der Zeile:

    if (checkbox.isSelected() == true)


    einen fehler, erst war checkbox falsch das habe ich jedoch behoben indem ich " private Object checkbox;" eingefügt habe. Nun ist aber "isSelected" falsch...Kann mir nicht erklären warum? Fehlermeldung: "cannot find symbol"

    Programm lässt sich auch nicht mehr starten.
     
  6. 20. Februar 2011
    AW: Threads Ein- und Ausschalten

    Du hast es mit deiner Ergänzung nicht gefixed...
    Der Compiler sieht checkbox, jez als Objekt der Klasse "Object" und die besitzt keine Methode "isSelected()".
    Du hättest checkregister in checkbox umbenennen müssen.

    Das Programm lässt sich nicht mehr starten, weil der Compiler nach diesem Fehler abbricht.
    In welchen Büchern hast du denn geschaut?
    http://openbook.galileocomputing.de/javainsel8/javainsel_16_012.htm#mj5a74ca0a7be54fde54eb1ac3fe636484
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.