Methoden Kleines Problem mit meinem Glücksrad...

FraxxeY

Mitglied
Heyho,

hab mir als Ziel gesetzt, ein png-Glücksrad auf Knopfdruck animiert zu drehen und random zu stoppen.

Bin relativ unerfahren, und hab mir aus dem Internet alles zusammengereimt was ging.

Der Code:
Java:
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.Color;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.swing.JButton;


public class ROULETTE extends JFrame
{
    /**
    *
    */
    private static final long serialVersionUID = 1L;
    private final int farbe = 2500140;
    private JLabel bg;
    private JLabel scheibe, ping;
    private static int gerollt;
    private int mpk;
    private Random roll;
    private static int multi;
    private JButton button;

    public static void main(String[] args)
    {
        new ROULETTE();
        Random roll = new Random();
        gerollt = roll.nextInt(101);
        System.out.println(gerollt);
       }
 
 
 
   
    public ROULETTE()
    {
        super("Roulette");
        setSize(1280, 720);
        setLayout(null);
        setResizable(false);
        setLocationRelativeTo(null);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setBackground(Color.darkGray);
             
        scheibe = new wheel();
        scheibe.setBounds(10,10,5000,5000);
        add(scheibe);
     
        ping = new pinger();
        ping.setBounds(10,10,5000,5000);
        add(ping);
     
        bg = new paintComponents();
        add(bg);
     
        button = new JButton("Spielen");
        button.setBounds(465, 500, 35, 10); //x, y, breite, hoehe
        add(button);
        repaint();
    }
    public class paintComponents extends JLabel
    {
      /**
        *
        */
        private static final long serialVersionUID = 1L;

        public void paintComponent(Graphics g)
      {
          super.paintComponent(g);
          g.setColor(new Color(farbe));
          g.fillRect(0, 0, 1280, 720);
       
       
      }
    }
 
    public class wheel extends JLabel
    {
 
        /**
        *
        */
        private static final long serialVersionUID = 1L;

        public void paintComponent(Graphics g)
        {
            int i = 0;
         
         
         
            do
            {
                i = i +1;
                BufferedImage rad = LoadImage("neu2.png");
           
              Graphics2D g2d = (Graphics2D) g;
                AffineTransform at = AffineTransform.getTranslateInstance(430,10);
                at.rotate(Math.toRadians(i), rad.getWidth()/2, rad.getHeight()/2);
                g2d.drawImage(rad, at, null);
              repaint();
            }
            while (i < gerollt);

        }
     
        BufferedImage LoadImage(String FileName)
        {
       
            BufferedImage img = null;
         
            try{
                img = ImageIO.read(new File(FileName));
            }catch(IOException e){
            }
         
            return img;
        }
     }
 
    public class pinger extends JLabel
    {

        /**
        *
        */
        private static final long serialVersionUID = 1L;
        public void paintComponent(Graphics g)
        {
            BufferedImage anzeige = LoadImage("anzeige.png");
            Graphics2D g2d = (Graphics2D) g;
         
            g2d.drawImage(anzeige, 0,0 , null);
            repaint();
        } 
         
            BufferedImage LoadImage(String FileName)
            {
                BufferedImage img = null;
             
                try{
                    img = ImageIO.read(new File(FileName));
                }catch(IOException e){
                }
             
                return img; 
        }
    }
}


("pinger" ist ein kleines Dreieck, das zeigen soll in welchem Feld das Rad steht)



Das Problem: Das Rad dreht sich nicht. Wenn ich in der paintComponent eine lokale Variable drinnen lasse (hier i), und in Math.toRadians i++ mach, dann dreht sich das animiert.

Aber ich bekomm das nicht hin, es auf Befehl random weit drehen zu lassen und das Feld unten in der Mitte auszulesen!

Mein Rad hat 54 Felder, also pro Feld wären 6,66 Grad zu drehen. Heißt: Ich hätte die random Zahl gerundet, und dem Programm gesagt dass nach z.B. 30 Grad drehen rot unten ist. Nur so als Beispiel. Geht das einfacher?

Und wie kann ich das Rad jetzt richtig drehen lassen?

MFG
 
Zuletzt bearbeitet:

AndiE

Top Contributor
In dem Code habe ich Fehler festgestellt. Nach meinem Experiment wirft der so Fehlermeldungen in Eclipse und wird überhaupt nicht ausgeführt. Ein Grund dafür sehe ich, in der main. Die Aufrufe von pack() und visible(true) sind üblicherweise der Abschluß.
 

FraxxeY

Mitglied
Und wir dürfen jetzt raten um welche Fehlermeldungen es geht ???
Gibt es denn auch was zu gewinnen ???

http://www.java-forum.org/forum-faq-beitraege/7407-man-fragen-richtig-stellt.html

Gruß Klaus
Es gibt keine, das Rad dreht einfach nicht. Manchmal startet das Programm mit gedrehtem Rad das dann ungeplant irgendwie andersrum abgebildet wird, aber das Rad soll sich ja sichtbar drehen, also das bild soll sich für ein paar Sekunden drehen.
 

AndiE

Top Contributor
Ich habe mal sowas programmiert. Wenn man auf den Button klickt, verschiebt sich das Quadrat. Genauso kann sich dann das Glücksrad drehen. Du musst aber dafür einen Timer nutzen.

Java:
package code;

public class Rad {
  
    public static void main(String[] args){
    Spielfeld sf= new Spielfeld();
    sf.Spielen();
    }
  
}

Java:
package code;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Spielfeld implements ActionListener{

    private JFrame frame;
    private JPanel panel;
    private JButton spiel;
    private Blatt malblatt;
    private int zahl;
  
    public void Spielfeld(){
      
    }
  
    public void Spielen(){
        frame= new JFrame();
        panel= new JPanel();
        spiel= new JButton("Spielen");
        malblatt= new Blatt();
        spiel.addActionListener(this);
        panel.add(malblatt);
        panel.add(spiel);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);  
      
    }
  
    public void actionPerformed( ActionEvent ae){
        if(ae.getSource()==this.spiel){
            zahl++;
            malblatt.SetZahl(zahl);
            frame.repaint();
        }
    }
}

Java:
package code;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JLabel;

public class Blatt extends JLabel{
  
      
    Dimension layoutSize;
    int zahl=0;
  
    public Blatt(){
        super();
    }
  
    @Override
    public Dimension getPreferredSize() {
        layoutSize = super.getPreferredSize();
        int max = Math.max(layoutSize.width, layoutSize.height);
        return new Dimension(max + 200, max + 200);
    }

    @Override
    public void paintComponent(final Graphics g){
        super.paintComponent(g);
        g.setColor(Color.RED);
        g.fillRect(10+10*zahl,10,20,20);
    }
  
    public void SetZahl(int z){
        this.zahl=z;
  
    }

}
 
Zuletzt bearbeitet von einem Moderator:

FraxxeY

Mitglied
Ich habe mal sowas programmiert. Wenn man auf den Button klickt, verschiebt sich das Quadrat. Genauso kann sich dann das Glücksrad drehen. Du musst aber dafür einen Timer nutzen.

Danke, werde mir das morgen mal genauer ansehen! Den Timer für was genau? Und für was benötigt man ein Override in einer Klasse ohne Supermethode? Oder ist da eine?

Gruß
 

AndiE

Top Contributor
wenn du den Code durchsiehst, dann fällt dir ein ActionListener auf. Dieser löst ein Neuzeichnen aus. Wenn du also dein Rad n-mal weiterderhen willst, musst du n-mal repaint mit einem Action-Listener aufrufen. So ein auslösendes Event können außer Buttons u.ä. auch Timer auslösen. Google mal danach.
Ansonsten halte ich dein Vorgehen für zu zeitaufwändig. Ein Pixel-Bild zu drehen dauert schon seine Zeit. Besser finde ich es, das Glücksrad aus Tortenstückchen zusammenzusetzen. Das ist weniger ressourcenintensiv, und läßt sich leichter verwalten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Ich habe ein kleines Problem mit meinem Übungsprogramm Java Basics - Anfänger-Themen 7
A Kleines Abbruch-Problem mit Do-While-Schleife Java Basics - Anfänger-Themen 4
D kleines problem bei system.out.println schreibweise Java Basics - Anfänger-Themen 6
C Kleines Problem mit System.out.print Java Basics - Anfänger-Themen 1
E Array zu Liste - kleines Problem Java Basics - Anfänger-Themen 6
J Vererbung Kleines Problem bei Vererbung! Java Basics - Anfänger-Themen 2
O Debug-Funktion mit Slick - Kleines Problem Java Basics - Anfänger-Themen 5
H Kleines Problem bei den Schleifen Java Basics - Anfänger-Themen 5
M Kleines Problem mit der Rekursion Java Basics - Anfänger-Themen 20
T kleines problem mit switch case Java Basics - Anfänger-Themen 11
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
R Login mit Datenbankabfrage: Kleines Problem! Java Basics - Anfänger-Themen 6
K Kleines Anfänger Problem bei der Abfrage Java Basics - Anfänger-Themen 8
X Kleines JMenuBar Problem Java Basics - Anfänger-Themen 8
P RSA Verschlüsselung kleines Problem Java Basics - Anfänger-Themen 5
P wahrscheinlich ein kleines Problem Java Basics - Anfänger-Themen 7
H Kleines Problem mit der Polymorphie Java Basics - Anfänger-Themen 2
S "Kleines" Problem mit dem Timer Java Basics - Anfänger-Themen 4
K kleines Array-Problem Java Basics - Anfänger-Themen 6
C Kleines 2D Spiel. Problem. Java Basics - Anfänger-Themen 5
U Kleines Problem mit Konstruktor^^ Java Basics - Anfänger-Themen 7
D kleines Eclipse-Problem ! Java Basics - Anfänger-Themen 2
O Kleines Problem mit Konstruktor mit Parametern aus generischer Klasse...oder so ;) Java Basics - Anfänger-Themen 2
M Kleines Problem mit Threads (synchronized) Java Basics - Anfänger-Themen 3
S Kleines Problem... NaN, Infinity? Java Basics - Anfänger-Themen 9
B Drag and Drop fähige Trackliste..nurnoch ein kleines Problem Java Basics - Anfänger-Themen 16
G Kleines Problem mit File Java Basics - Anfänger-Themen 7
G Kleines Problem mit Nimmspiel Java Basics - Anfänger-Themen 8
U kleines problem bei ner aufgabe :( Java Basics - Anfänger-Themen 8
G Kleines Problem mit Array Java Basics - Anfänger-Themen 14
R Unicode-Wert in Binär und Dezimal umformen - kleines Problem Java Basics - Anfänger-Themen 1
G Kleines Problem Java Basics - Anfänger-Themen 3
S Hab ein kleines Problem :) Java Basics - Anfänger-Themen 4
D noch ein kleines Problem Java Basics - Anfänger-Themen 4
M kleines generics problem Java Basics - Anfänger-Themen 15
B Kleines? Jedenfalls Problem mit Borland-Together! Java Basics - Anfänger-Themen 4
D Kleines Problem mit JDBC Java Basics - Anfänger-Themen 2
D Hab ein kleines Problem mit setScreenSize Java Basics - Anfänger-Themen 2
B kleines Problem Java Basics - Anfänger-Themen 3
G Kleines Problem Java Basics - Anfänger-Themen 5
A Kleines bzw. großes Problem ! Java Basics - Anfänger-Themen 2
Y kleines Problem Java Basics - Anfänger-Themen 9
J Kleines Problem mit Checkbox Java Basics - Anfänger-Themen 5
N Kleines Problem mit meiner ersten Klasse Java Basics - Anfänger-Themen 5
0 Kleines Problem mit ArrayList Java Basics - Anfänger-Themen 25
N kleines Problem mit meiner Schleife Java Basics - Anfänger-Themen 8
megachucky Kleines Problem mit dem "return" einer Methode. Java Basics - Anfänger-Themen 11
T moin leute hab ein kleines aber pikantes problem Java Basics - Anfänger-Themen 10
L nur kleines null Pointer Exception problem Java Basics - Anfänger-Themen 9
G kleines problem beim einlesen Java Basics - Anfänger-Themen 3
C Erstes kleines Problem - string in chat ? Java Basics - Anfänger-Themen 9
megachucky kleines problem mit einer nullpointer exception Java Basics - Anfänger-Themen 2
N Kleines Problem! Java Basics - Anfänger-Themen 7
megachucky kleines problem mit nem STACK Java Basics - Anfänger-Themen 8
P Kleines Problem Java Basics - Anfänger-Themen 2
G Kleines Problem Java Basics - Anfänger-Themen 7
S Kleines Java-Projekt; Kassenprogramm Java Basics - Anfänger-Themen 7
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
J Kleines Rechenprogramm Java Basics - Anfänger-Themen 13
G Erste Schritte Suche Java Programmierer für kleines Projekt Java Basics - Anfänger-Themen 1
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
B Input/Output Kleines Netzwerkproblem Java Basics - Anfänger-Themen 2
J OOP Kleines Schülerverwaltungsprogramm Java Basics - Anfänger-Themen 9
N ein kleines GUI mit einem hauch XML Java Basics - Anfänger-Themen 5
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
T erstes kleines Programm Java Basics - Anfänger-Themen 17
S Kleines Quiz Programm Java Basics - Anfänger-Themen 4
C Hilfe - Kleines Programm macht mir Schwierigkeiten Java Basics - Anfänger-Themen 2
K Ein kleines Rätsel Java Basics - Anfänger-Themen 2
E Erstes "kleines" Programm Java Basics - Anfänger-Themen 5
A Best Practice Ideen für kleines Anfängerschulprojekt gesucht Java Basics - Anfänger-Themen 4
J kleines Karteikartenprogramm Java Basics - Anfänger-Themen 3
S Kleines Zeichen berechnen Java Basics - Anfänger-Themen 5
fLooojava kleines Projekt - Verwendung von Youtube Java Basics - Anfänger-Themen 22
fLooojava Passwort generieren - kleines Programm Java Basics - Anfänger-Themen 15
H Kleines Prob Java Basics - Anfänger-Themen 5
J Flaechen vergleichen/kleines Fehler? Java Basics - Anfänger-Themen 23
K Kleines Projekt Java Basics - Anfänger-Themen 2
T Kleines Game mit Kollision Java Basics - Anfänger-Themen 2
J Mal wieder ein kleines Toleranzproblem Java Basics - Anfänger-Themen 20
H kleines Spiel [Processing] Java Basics - Anfänger-Themen 7
R Kleines Programm, benötige Hilfe! Java Basics - Anfänger-Themen 6
D Kleines Abfrageproblem Java Basics - Anfänger-Themen 3
K kleines Rekursionsproblem Java Basics - Anfänger-Themen 7
B Suche kleines Java-Applet Java Basics - Anfänger-Themen 6
P Kleines Problemm mit einer NullPointerException Java Basics - Anfänger-Themen 2
R kleines Kunstprogramm "mkbox" perfektionieren Java Basics - Anfänger-Themen 13
P Kleines Projekt -> Große Überlegungen Java Basics - Anfänger-Themen 2
U Bitte Helfen kleines Spiel Java Basics - Anfänger-Themen 9
K Kleines Spiel / Daten speichern Java Basics - Anfänger-Themen 8
T Kleines Spiel realisieren - wie? Java Basics - Anfänger-Themen 6
T Kleines Verständnissproblem mit Regex Java Basics - Anfänger-Themen 4
S Kleines Kartenspiel mit Java Java Basics - Anfänger-Themen 2
I Kleines Program, fehler? Java Basics - Anfänger-Themen 2
S kleines Würfelspiel Java Basics - Anfänger-Themen 10
0 Frage zu Architektur: Server eines kleines Spiels Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben