コード例 #1
0
  /** Initialisiere GUI-Komponenten des ThreadStatusPanels */
  public void init() {
    this.setLayout(new GridLayout(3, 1));
    this.setBorder(BorderFactory.createTitledBorder(t.getName()));
    Dimension d = new Dimension(200, 120);
    this.setPreferredSize(d);

    // Labels (Beachtet: Sie bekommen nicht direkt einen Text! Warum? Schaut runter in die
    // paint()-Methode)
    labelStatus = new JLabel();
    labelInterval = new JLabel();

    // Eine neue GUI-Komponente! Der JSlider zum Intuitiven Ändern eines Wertes innerhalb
    // wohldefinierter Grenzen
    sliderInterval = new JSlider();
    sliderInterval.setMinimum(250); // Kleinstmöglicher Wert
    sliderInterval.setMaximum(20000); // Größtmöglicher Wert
    sliderInterval.setMinorTickSpacing(250); // Abstände zwischen Werten (optional)
    sliderInterval.setSnapToTicks(true); // "Snap" auf diese festen Werte
    sliderInterval.setValue(t.getInterval()); // Initialer Wert

    // Button
    buttonToggle = new JButton("Starten/Anhalten");

    // Zusammenbauen
    this.add(labelStatus);
    JPanel sub = new JPanel();
    sub.setLayout(new GridLayout(1, 2));
    sub.add(labelInterval);
    sub.add(sliderInterval);
    this.add(sub);
    this.add(buttonToggle);
  }
コード例 #2
0
 @Override
 public void paint(Graphics g) {
   // Aktualisiere die Label-Texte abhängig vom aktuellen Thread-Status
   labelStatus.setText(this.running ? "LÄUFT" : "WARTET");
   labelStatus.setForeground(this.running ? Color.blue : Color.gray);
   labelInterval.setText(String.format("Intervall: %d ms", t.getInterval()));
   super.paint(g);
 }
コード例 #3
0
 /**
  * Re-initialisiert das ThreadStatusPanel. Die beiden gemeinsamen Datenstrukturen werden
  * mitgegeben, damit die Hilfsmethode zum Erzeugen einer neuen IntervalThread-Instanz direkt die
  * passenden Referenzen besitzt
  *
  * @param schlange
  * @param portionen
  * @return
  */
 public IntervalThread reinit(Schlange schlange, Portionen portionen) {
   // Stoppe den aktuellen Thread
   this.t.interrupt();
   // Erzeuge über eine Hilfsmethode einen neuen
   IntervalThread newThread = Utils.makeNewIntervalThread(t.getClass(), schlange, portionen);
   this.t = newThread;
   // Setze den Zustand auf "nicht laufend"
   this.running = false;
   // Zeichne die Komponente neu
   this.repaint();
   // Gib' den neuen Thread zurück (kann in der GUI zurück in die Thread-Map gepackt werden)
   return newThread;
 }