Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako pauzirati i kontrolisati animaciju u JApplet-u?

[es] :: Java :: Kako pauzirati i kontrolisati animaciju u JApplet-u?

[ Pregleda: 969 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

milicaneskovic
student

Član broj: 203527
Poruke: 3
*.mediaworksit.net.



Profil

icon Kako pauzirati i kontrolisati animaciju u JApplet-u?08.06.2010. u 09:10 - pre 169 meseci
Pozdrav svima!

Pokušavam da napravim jednu animaciju koja simulira čekanje u redu na šalteru: ljudi čekaju, ispred njih su 3 šaltera i oni prilaze slobodnom. Simulirala sam to tako što sam crtala kružiće koji se pomeraju ka velikom krugu (on simulira šalter) i sada bih da te kružiće kontrolišem, tj. da omogućim pauziranje animacije, kao i da kružići dolaze do slobodnog šaltera. Možete pokrenuti i pogledati navedeni kod:

Evo koda za aplet:

Code:
package org.me.log;

import javax.swing.JApplet;

public class LogAplet extends JApplet {

    @Override
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
            }
    }
    // TODO overwrite start(), stop() and destroy() methods
   private void initComponents() {

        panel1 = new org.me.log.LogPanel1();
        slider1 = new javax.swing.JSlider();
        slider4 = new javax.swing.JSlider();
        slider2 = new javax.swing.JSlider();
        slider5 = new javax.swing.JSlider();
        slider3 = new javax.swing.JSlider();
        slider6 = new javax.swing.JSlider();
        label1 = new javax.swing.JLabel();
        label2 = new javax.swing.JLabel();
        label3 = new javax.swing.JLabel();
        label4 = new javax.swing.JLabel();
        label5 = new javax.swing.JLabel();
        label6 = new javax.swing.JLabel();
        panel2 = new org.me.log.LogPanel2();

        panel1.setBackground(new java.awt.Color(255, 255, 255));
        panel1.setBorder(new javax.swing.border.LineBorder(javax.swing.UIManager.getDefaults().getColor("Slider.foreground"), 2, true));

        javax.swing.GroupLayout panel1Layout = new javax.swing.GroupLayout(panel1);
        panel1.setLayout(panel1Layout);
        panel1Layout.setHorizontalGroup(
            panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 288, Short.MAX_VALUE)
        );
        panel1Layout.setVerticalGroup(
            panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 367, Short.MAX_VALUE)
        );

        label1.setFont(new java.awt.Font("Tahoma", 1, 14));
        label1.setText("Broj sati");

        label2.setFont(new java.awt.Font("Tahoma", 1, 14));
        label2.setText("Nervoza radnika");

        label3.setFont(new java.awt.Font("Tahoma", 1, 14));
        label3.setText("Gužva");

        label4.setFont(new java.awt.Font("Tahoma", 1, 14));
        label4.setText("Broj sati");

        label5.setFont(new java.awt.Font("Tahoma", 1, 14));
        label5.setText("Nervoza radnika");

        label6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        label6.setText("Gužva");

        panel2.setBackground(new java.awt.Color(255, 255, 255));
        panel2.setBorder(new javax.swing.border.LineBorder(javax.swing.UIManager.getDefaults().getColor("Slider.foreground"), 2, true));

        slider1.setMajorTickSpacing(10);
        slider1.setPaintLabels(true);
        slider1.setPaintTicks(true);
        slider1.setValue(20);
        slider1.setMaximum(40);

        slider2.setMajorTickSpacing(25);
        slider2.setPaintLabels(true);
        slider2.setPaintTicks(true);
        slider2.setValue(50);
        slider2.setMaximum(100);

        slider3.setMajorTickSpacing(25);
        slider3.setPaintLabels(true);
        slider3.setPaintTicks(true);
        slider3.setValue(50);
        slider3.setMaximum(100);

        slider4.setMajorTickSpacing(10);
        slider4.setPaintLabels(true);
        slider4.setPaintTicks(true);
        slider4.setValue(20);
        slider4.setMaximum(40);

        slider5.setMajorTickSpacing(25);
        slider5.setPaintLabels(true);
        slider5.setPaintTicks(true);
        slider5.setValue(50);
        slider5.setMaximum(100);

        slider6.setMajorTickSpacing(25);
        slider6.setPaintLabels(true);
        slider6.setPaintTicks(true);
        slider6.setValue(50);
        slider6.setMaximum(100);


        javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(panel2);
        panel2.setLayout(panel2Layout);
        panel2Layout.setHorizontalGroup(
            panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 288, Short.MAX_VALUE)
        );
        panel2Layout.setVerticalGroup(
            panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 367, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(panel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(slider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(slider2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(label1)
                    .addComponent(label2)
                    .addComponent(label3)
                    .addComponent(slider3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(label6)
                    .addComponent(label5)
                    .addComponent(label4)
                    .addComponent(slider5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(slider4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(slider6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(panel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(panel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(panel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(label1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(slider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(label2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(slider2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(label3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(slider3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(label4)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(slider4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(label5)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(slider5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(label6)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(slider6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
    }// </editor-fold>

    // Variables declaration - do not modify
    public javax.swing.JLabel label1;
    public javax.swing.JLabel label2;
    public javax.swing.JLabel label3;
    public javax.swing.JLabel label4;
    public javax.swing.JLabel label5;
    public javax.swing.JLabel label6;
    public javax.swing.JPanel panel1;
    public javax.swing.JPanel panel2;
    static public javax.swing.JSlider slider1;
    static public javax.swing.JSlider slider2;
    static public javax.swing.JSlider slider3;
    static public javax.swing.JSlider slider4;
    static public javax.swing.JSlider slider5;
    static public javax.swing.JSlider slider6;
    // End of variables declaration
}


Ovo je panel na kome je nacrtan sadržaj:

Code:
package org.me.log;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class LogPanel2 extends JPanel {
    int i;

  // timer delay: equivalent to the Thread.sleep time
  private static final int TIMER_DELAY = 1;

  // how far to move in x dimension with each loop of timer
     int DELTA_X = 1;

  // the images x & y locations
  private int x2 = 130;
  private int y2 = 330;
  private int y21 = y2-50;
  private int y22=y2-100;
  private int y23=y2-150;
  private int y24=y2-200;

  public LogPanel2() {
    try {
      // first get our image

    } catch (Exception e) {
      e.printStackTrace();
    }

    // create and start the Swing Timer
    new Timer(TIMER_DELAY, new TimerListener()).start();
  }

  // all paintComponent does is paint -- nothing else
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.setColor(Color.black);
    g.drawString("1", 42, 20);
    g.drawString("2", 137, 20);
    g.drawString("3", 232, 20);
    g.setColor(new Color (178, 34, 34));

    g.fillOval(30, 50, 30, 30);
    g.fillOval(125, 55, 30, 30);
    g.fillOval(220, 50, 30, 30);

    setBackground (Color.white);
    g.setColor(new Color (220,220,220));

    g.fillRect(130,100,20,250);
    g.setColor(new Color (205,92,92));
       if (y2 <= 330 && y2 >= 85) {
            g.fillOval( x2, y2, 20, 20);
            g.fillOval( x2, y21, 20,20);
            g.fillOval( x2, y22, 20,20);
            g.fillOval( x2, y23, 20,20);
            g.fillOval( x2, y24, 20,20);
  }
    else {
System.out.println("y2= " + y2); // Show the value that fails if test
}
    }
  private class TimerListener implements ActionListener {
    // is called every TIMER_DELAY ms
    public void actionPerformed(ActionEvent e) {
            y2 -= DELTA_X;
            y21 -= DELTA_X;
            y22 -= DELTA_X;
            y23 -= DELTA_X;
            y24 -= DELTA_X;

       if (y2<85){
          y2=330;
       }
           if (y21<85){
          y21=330;
      }
             if (y22<85){
          y22=330;
      }
                 if (y23<85){
          y23=330;
      }
                     if (y24<85){
          y24=330;
      }

      // ask JVM to paint this JPanel
      LogPanel2.this.repaint();
    }
  } 
}


A ovo je kod drugog panela, čija ću svojstva tek dodavati:

Code:
package org.me.log;

import java.awt.Color;
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class LogPanel1 extends JPanel {

    // timer delay: equivalent to the Thread.sleep time
  private static final int TIMER_DELAY = 1;

  // how far to move in x dimension with each loop of timer
     int DELTA_X = 1;

  // the images x & y locations
  private int x2 = 130;
  private int y2 = 330;
    private int y21 = y2-50;
private int y22=y2-100;
private int y23=y2-150;
private int y24=y2-200;

                    static int value1;
                    static int value2;
                    static int value3;

  public LogPanel1(){

  try {

           // first get our image

    } catch (Exception e) { // shame on me for combining exceptions :(
      e.printStackTrace();
    }

    // create and start the Swing Timer
    new Timer(TIMER_DELAY, new TimerListener()).start();
}


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

     g.setColor(Color.blue);

     value1=LogAplet.slider1.getValue();
     value2=LogAplet.slider2.getValue();
     value3=LogAplet.slider3.getValue();

      g.setColor(Color.BLACK);

      g.drawString("1", 42, 20);
      g.drawString("2", 137, 20);
      g.drawString("3", 232, 20);

      g.setColor(new Color (220,220,220));

      g.fillRect(35,100,20,230);
      g.fillRect(130,100,20,230);
      g.fillRect(225,100,20,230);

      g.setColor(new Color (178, 34, 34));

      g.fillOval(30, 50, 30, 30);
      g.fillOval(125, 50, 30, 30);
      g.fillOval(220, 50, 30, 30);

      g.setColor(new Color (205,92,92));

      g.fillOval(35, 250, 20, 20);
      g.fillOval(35, 300, 20, 20);
      g.fillOval(35, 200, 20, 20);
      g.fillOval(35, 150, 20, 20);
      g.fillOval(35, 100, 20, 20);

      g.fillOval(130, 250, 20, 20);
      g.fillOval(130, 300, 20, 20);
      g.fillOval(130, 200, 20, 20);
      g.fillOval(130, 150, 20, 20);
      g.fillOval(130, 100, 20, 20);

      g.fillOval(225, 250, 20, 20);
      g.fillOval(225, 300, 20, 20);
      g.fillOval(225, 200, 20, 20);
      g.fillOval(225, 150, 20, 20);
      g.fillOval(225, 100, 20, 20);

       g.setColor(new Color (220,220,220));

    g.fillRect(130,100,20,250);
    g.setColor(new Color (205,92,92));
       if (y2 <= 330 && y2 >= 85) {
            g.fillOval( x2, y2, 20, 20);
            g.fillOval( x2, y21, 20,20);
            g.fillOval( x2, y22, 20,20);
            g.fillOval( x2, y23, 20,20);
            g.fillOval( x2, y24, 20,20);

      repaint();
}}

    private class TimerListener implements ActionListener {
    // is called every TIMER_DELAY ms
    public void actionPerformed(ActionEvent e) {
            y2 -= DELTA_X;
            y21 -= DELTA_X;
            y22 -= DELTA_X;
            y23 -= DELTA_X;
            y24 -= DELTA_X;

       if (y2<80){
          y2=330;
       }
           if (y21<80){
          y21=330;
      }
             if (y22<80){
          y22=330;
      }
                 if (y23<80){
          y23=330;
      }
                     if (y24<80){
          y24=330;
      }

      // ask JVM to paint this JPanel
      LogPanel1.this.repaint();
    }
  }
    }


Trenutno vršim podešavanja i upravljanje simulacijom u LogPane2. Mislim da tu treba podešavati ponašanje animacije, tj. definisati pomeranje ovih elemenata, samo nisam sigurna kako. Nadam se da neko može pomoći.

 
Odgovor na temu

[es] :: Java :: Kako pauzirati i kontrolisati animaciju u JApplet-u?

[ Pregleda: 969 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.