2017-07-08 4 views
-4

Ich habe ein Problem. Zuerst - ICH HABE UND ICH HABE EINEN KNOPF. Mein Problem ist: Wie kann es für jeden Button auf verschiedene Effekt-Animationen klicken. Also, wenn ich zum ersten Mal auf den Button klicke, geht das Bild runter, dann klicke ich das zweite Mal von links nach rechts, dann klicke ich das dritte mal auf Bild und dann nochmal für viertes Klickbild runter (; Animation kann ich machen) rechts, Animation nach unten und dann Bild gone.So ich weiß, wie Animation (Effekte) zu tun, aber ich weiß einfach nicht, wie für jeden schaffen unterschiedliche Wirkung auf das Bild klicken) ...Für jeden Klick anderer Effekt?

Antwort

0
  • ersten Lese über ActioListeners
  • dann erstellen Sie einfach einen Listener, der einen Zähler verwendet!

Jedes Mal, wenn Sie auf die Schaltfläche klicken, erhöht der Listener diesen Zähler. Und Sie verwenden verschiedene Animationen basierend auf dem aktuellen Wert des Zählers. Wenn die "letzte" Animation stattfand, setzen Sie einfach den Zähler zurück, um von vorne anzufangen.

0

Hier gehen Sie

public class ButtonCycle extends JPanel { 
    private int counter = 0; 

    public ButtonCycle() { 
     JButton btn = new JButton("Next"); 
     btn.addMouseListener(new MouseListener() { 
      @Override 
      public void mouseReleased(MouseEvent e) {} 
      @Override 
      public void mousePressed(MouseEvent e) {} 
      @Override 
      public void mouseClicked(MouseEvent e) { 
       switch(counter) { 
        case 0: 
         // "Go down"-animation code here 
         System.out.println("Go down"); 

         counter++; 
         break; 
        case 1: 
         // "Left->right"-animation code here 
         System.out.println("Left->right"); 

         counter++; 
         break; 
        case 2: 
         // "Disappearing"-animation code here 
         System.out.println("*poof*, now I'm gone"); 

         counter = 0; 
         break; 
       } 
      } 
      @Override 
      public void mouseExited(MouseEvent e) {} 
      @Override 
      public void mouseEntered(MouseEvent e) {} 
     }); 

     add(btn); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       JFrame f = new JFrame("Button cycling through animations"); 
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       f.setPreferredSize(new Dimension(250,250)); 
       f.setContentPane(new ButtonCycle()); 
       f.pack(); 
       f.setLocationRelativeTo(null); 
       f.setVisible(true); 
      } 
     }); 
    } 
} 
0

Sie die java.util.Random Klasse nutzen könnte zusammen mit dem Random.nextInt() Verfahren gegen Werte von 1 bis 4 innerhalb des ActionPerformed Fall dein Knopf. Abhängig davon, welcher Wert zufällig erzeugt wird, kann dann eine spezifische Animationsmethode ausgeführt werden, vielleicht durch einen Schalter/Fall oder wenn Aussagen ... was auch immer. Hier ein Beispiel:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    Random rnd = new Random(); 
    int value = (rnd.nextInt(4) + 1); 
    switch (value) { 
     case 1: 
      imageDown(); 
      break; 
     case 2: 
      imageLeftRight(); 
      break; 
     case 3: 
      imageGone(); 
      break; 
     case 4: 
      imageUp(); 
      break; 
    } 
} 

Oder wenn Sie bevorzugen, können Sie die Math.random() Methode verwenden, zum Beispiel:.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    int value = 4 + (int)(Math.random() * (((1 - 2) - 4) + 1)); 
    switch (value) { 
     case 1: 
      imageDown(); 
      break; 
     case 2: 
      imageLeftRight(); 
     break; 
     case 3: 
      imageGone(); 
      break; 
     case 4: 
      imageUp(); 
      break; 
    } 
} 

Natürlich gibt es Zeiten, wenn der Zufall Die generierte Zahl ist die gleiche wie die zuvor generierte Zahl. Sie können aber auch ein Klassenfeld verwenden, um den vorherigen Zufallswert zu speichern. Wenn der aktuell generierte Wert derselbe ist wie der zuvor generierte Wert, können Sie innerhalb von vielleicht ein anderes erzeugen a tun/während Schleife, für Beispiel:

private int previousValue = 0; 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    int value = 0; 
    Random rnd = new Random(); 
    do { 
     value = (rnd.nextInt(4) + 1); 
    } while (previousValue == value); 
    previousValue = value; 
    switch (value) { 
     case 1: 
      imageDown(); 
      break; 
     case 2: 
      imageLeftRight(); 
      break; 
     case 3: 
      imageGone(); 
      break; 
     case 4: 
      imageUp(); 
      break; 
    } 
}