Würfel

new(Rup7or)

Mitglied
hallo ich habe ein Programm schreiben müssen um die Hintergrundfarbe eines Fensters zu ändern, da hab ich mich mit viel Mühe und noch mehr Hilfe durchgeboxt mit folgendem code
Java:
import java.awt.*;                             // Color
import javax.swing.*;          //JFrame, JPanel, JLabel
import java.awt.event.*;                    // Listener
/**
 * Erzeugen eines Fensters mit Text und Button.
 */
public class Farbe
  extends JFrame
  implements ActionListener
{
 /**
 * Konstante, Aendern der Hintergrundsfarbe.
 */
  static public String ACTION_SET = "aendern";
/**
 * Konstante, Beenden des Programms.
 */
  static public String ACTION_QUIT = "Ende";
/**
 * Content Pane, Darstellungsbereich des Fensters.
 */
  private JPanel contentPane;
/**
 * Konstruktor, baut das Fenster auf.
 * @param titel Titelleistentext
 * @param farbe Fensterhintergrundsfarbe
 */
  public Farbe( String titel, Color farbe)
  {
// Titelleiste
    super( titel);

// Darstellungsbereich
    contentPane = new JPanel();
    contentPane.setBackground( farbe);
                             // Button Set mit Listener
    JButton btSet = new JButton( ACTION_SET);
    contentPane.add( btSet);
    btSet.addActionListener( this);
                                         // Label Hallo
    JLabel lbHallo = new JLabel( "Switch!");
    contentPane.add( lbHallo);
                            // Button Quit mit Listener
    JButton btQuit = new JButton( ACTION_QUIT);
    contentPane.add( btQuit);
    btQuit.addActionListener( this);
// Fenster
                           // Fensterinhalt uebernehmen
    setContentPane( contentPane);
    pack();              // Anpassen der Fenstergroesse
                              // Beenden durch x-Button
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
    setVisible( true);                // Sichtbarmachen
  }
/**
 * Ereignisverarbeitung, ActionListener,
 * Betaetigen eines Button.
 */
  public void actionPerformed( ActionEvent ae)
  {
    String command = ae.getActionCommand();
// Farbwechsel durch Button Set
    if( command.equals( ACTION_SET))
    {
      float dummy1 = ( float)Math.random();
      float dummy2 = ( float)Math.random();
      float dummy3 = ( float)Math.random();
      Color farbe = new Color( dummy1, dummy2, dummy3);
	  contentPane.setBackground( farbe);
    }
// Programmabbruch durch Button Quit
    if( command.equals( ACTION_QUIT))
    {
      System.exit( 0);
    }
  }
/**
 * Aufruf des Programms.
 */
  public static void main(String args[])
  {
    Farbe fa = 
      new Farbe( "Farbwechsel", Color.yellow);
  }
}
jetzt möchte ich dieses Programm so ändern das nicht die Farbe geändert wird sondern dass durch den set Button gewürfelt werden kann. anstelle des Schrifuges "switch" soll eben eine zufalls zahl des Würfels stehen.
sitze da schon länger dran und bekomm leider nichts hin -.-
hier meine ersten änderungsversuche
Java:
import java.awt.*;                             // Color
import javax.swing.*;          //JFrame, JPanel, JLabel
import java.awt.event.*;                    // Listener
/**
 * Erzeugen eines Fensters mit Text und Button.
 */
public class GUIWuerfel
  extends JFrame
  implements ActionListener
{
/**
 * Konstante, zur Würfelausführung.
 */
  static public String ACTION_SET = "Wurf";
/**
 * Konstante, Beenden des Programms.
 */
  static public String ACTION_QUIT = "Ende";
/**
 * Content Pane, Darstellungsbereich des Fensters.
 */
  private JPanel contentPane;
/**
 * Konstruktor, baut das Fenster auf.
 * @param titel Titelleistentext
 * @param farbe Fensterhintergrundsfarbe
 * @param zahl gewürfelte Zahl
 */
  public GUIWuerfel( String titel, Color farbe, Integer zahl)
  {
// Titelleiste
    super( titel);
/*
// Darstellungsbereich
    contentPane = new JPanel();
    contentPane.setBackground( farbe);
                             // Button Wurf mit Listener
    JButton btWurf = new JButton( ACTION_SET);
    contentPane.add( btWurf);
    btWurf.addActionListener( this);
                                         // Label Mit Würfelanzeige!!!!!!!!!!!!!!!!!
    JLabel lbWurf = new Jlabel (lbWurf.setText(" " + zahl));
	//JLabel lbWuerfelzahl = new JLabel( "Würfel");
    //contentPane.add( lbWuerfelzahl;
                            // Button Quit mit Listener
    JButton btQuit = new JButton( ACTION_QUIT);
    contentPane.add( btQuit);
    btQuit.addActionListener( this);
*/
// Fenster
                           // Fensterinhalt uebernehmen
    setContentPane( contentPane);
    pack();              // Anpassen der Fenstergroesse
                              // Beenden durch x-Button
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
    setVisible( true);                // Sichtbarmachen
  }
/**
 * Ereignisverarbeitung, ActionListener,
 * Betaetigen eines Button.
 */
  public void actionPerformed( ActionEvent ae)
  {
    String command = ae.getActionCommand();
/*
// Farbwechsel durch Button Set
    if( command.equals( ACTION_SET))
    {
      float dummy1 = ( float)Math.random();
      float dummy2 = ( float)Math.random();
      float dummy3 = ( float)Math.random();
      Color farbe = new Color( dummy1, dummy2, dummy3);

      contentPane.setBackground( farbe);
    }
*/
// Programmabbruch durch Button Quit
    if( command.equals( ACTION_QUIT))
    {
      System.exit( 0);
    }
  }

/* ------------------------------------------------- */
/**
 * Aufruf des Programms.
 */
  public static void main(String args[])
  {
    GUIWuerfel roll = 
      new GUIWuerfel( "Würfel", Color.red);
  }
}
 

XHelp

Top Contributor
Es gibt doch da auf den ersten Blick kein "Schriftzug switch". Du könntest es ja mit konkreten Fragen versuchen, dann würden die Antworten nicht so schwer fallen.
Generell: ein JLabel zu plazieren kann nicht schaden. Wie man eine zufällige Zahl bekommt, hast du schon im Code. Und den Text änderst du mit
Code:
setText
 

new(Rup7or)

Mitglied
ja, die zufallszahl mach ich mit Math.random(), denk ich mal. aber ich bekomms dennoch iwi nicht hin. also ich wüsste gern wie ich es anstelle das das der würfel würfelt und die zahl in einem label angezeigt wird.
 

XHelp

Top Contributor
Steht doch schon da:
JLabel setzen, im Listener würfeln und anzeigen. Warum das meiste, was du brauchst, auskommentiert ist, ist mir allerdings ein Rätsel
 

new(Rup7or)

Mitglied
das hab ich gemacht um nicht durcheinander zu kommen, is ja auch wurst^^
kann ich für das würfeln
dann sowas wie
Java:
public void wuerfeln
	{
	zahl =(int) (Math.random() * 6 ) 
	return zahl;

	}
hinzufügen?
 

XHelp

Top Contributor
1. Generiert es dir Zahlen im Bereich [0,5]
2. void Methoden haben keine Rückgabe, da du int zurückgeben willst, solltest du die Methode etwas anpassen
 

new(Rup7or)

Mitglied
also dann eher
public int wuerfeln
Java:
{
    zahl =(int) (Math.random() * 7 ); 
    return zahl;
 
    }
jetzt hab ich die Zahlen von [0,6] muss nur noch iwi die null ausschließen

ansonsten hab ich jetzt was anderes probiert
Java:
public void actionPerformed( ActionEvent ae)
  {
    String command = ae.getActionCommand();
/*
// Farbwechsel durch Button Set
    if( command.equals( ACTION_SET))
    {
      int zahl =(int) (Math.random() * 7 ); 
	  

      contentPane.setText( zahl);
    }
und diese
Java:
public GUIWuerfel( String titel, Color farbe, Integer zahl)
  {
// Titelleiste
    super( titel);

// Darstellungsbereich
    contentPane = new JPanel();
    contentPane.setBackground( farbe);
                             // Button Wurf mit Listener
    JButton btWurf = new JButton( ACTION_SET);
    contentPane.add( btWurf);
    btWurf.addActionListener( this);
                                         // Label Mit Würfelanzeige!!!!!!!!!!!!!!!!!
    JLabel lbWurf = new Jlabel (lbWurf.setText(" " + zahl));
	

	
	
	//JLabel lbWuerfelzahl = new JLabel( "Würfel");
    //contentPane.add( lbWuerfelzahl;
                            // Button Quit mit Listener
    JButton btQuit = new JButton( ACTION_QUIT);
    contentPane.add( btQuit);
    btQuit.addActionListener( this);
*/
// Fenster
                           // Fensterinhalt uebernehmen
    setContentPane( contentPane);
    pack();              // Anpassen der Fenstergroesse
                              // Beenden durch x-Button
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
    setVisible( true);                // Sichtbarmachen
  }

also das sind die Änderungen des ursprünglichen Textes
kann das so funktionieren?
 

new(Rup7or)

Mitglied
ich hoffe das mit der leeren actionPerformed bezog sich nur auf die ausklammerung also so dann
Java:
 public void actionPerformed( ActionEvent ae)
  {
    String command = ae.getActionCommand();

// Würfeln wegen
    if( command.equals( ACTION_SET))
    {
      int zahl =(int) (Math.random() * 6 + 1 ); 
	  

      contentPane.setText( zahl);
    }

// Programmabbruch durch Button Quit
    if( command.equals( ACTION_QUIT))
    {
      System.exit( 0);
    }
  }
ist das besser?
 

new(Rup7or)

Mitglied
das mit der final konstante weis ich grad nich wie ich das machen soll
der rest scheint auch nich zu gehen mein Code sieht inzwischen so aus

Java:
import java.awt.*;                             // Color
import javax.swing.*;          //JFrame, JPanel, JLabel
import java.awt.event.*;                    // Listener
/**
 * Erzeugen eines Fensters mit Text und Button.
 */
public class GUIWuerfel
  extends JFrame
  implements ActionListener
{
/**
 * Konstante, zur Würfelausführung.
 */
  static public String ACTION_SET = "Wurf";
/**
 * Konstante, Beenden des Programms.
 */
  static public String ACTION_QUIT = "Ende";
/**
 * Content Pane, Darstellungsbereich des Fensters.
 */
  private JPanel contentPane;
/**
 * Konstruktor, baut das Fenster auf.
 * @param titel Titelleistentext
 * @param farbe Fensterhintergrundsfarbe
 * @param zahl gewürfelte Zahl
 */
  public GUIWuerfel( String titel, Color farbe, Integer zahl)
  {
// Titelleiste
    super( titel);
 
// Darstellungsbereich
    contentPane = new JPanel();
    contentPane.setBackground( farbe);
                             // Button Wurf mit Listener
    JButton btWurf = new JButton( ACTION_SET);
    contentPane.add( btWurf);
    btWurf.addActionListener( this);
                                         // Label Mit Würfelanzeige!!!!!!!!!!!!!!!!!
    JLabel lbWurf = new Jlabel (lbWurf.setText(" " + zahl));
    //JLabel lbWuerfelzahl = new JLabel( "Würfel");
    contentPane.add( lbWurf);
                            // Button Quit mit Listener
    JButton btQuit = new JButton( ACTION_QUIT);
    contentPane.add( btQuit);
    btQuit.addActionListener( this);

// Fenster
                           // Fensterinhalt uebernehmen
    setContentPane( contentPane);
    pack();              // Anpassen der Fenstergroesse
                              // Beenden durch x-Button
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
    setVisible( true);                // Sichtbarmachen
  }
/**
 * Ereignisverarbeitung, ActionListener,
 * Betaetigen eines Button.
 */
  public void actionPerformed( ActionEvent ae)
  {
    String command = ae.getActionCommand();
 
// Würfeln wegen
    if( command.equals( ACTION_SET))
    {
      int zahl =(int) (Math.random() * 6 + 1 ); 
      
 
      contentPane.setText( zahl);
    }
 
// Programmabbruch durch Button Quit
    if( command.equals( ACTION_QUIT))
    {
      System.exit( 0);
    }
  }
/**
 * Aufruf des Programms.
 */
  public static void main(String args[])
  {
    GUIWuerfel roll = new GUIWuerfel( "Wuerfel", Color.red);
  }
}

aber weiter bin ich dennoch nicht
 

XHelp

Top Contributor
"Scheint nicht zu gehen" heißt? Debugausgaben sind auch immer hilfreich, sowas wie System.out.println("Button wurde geklickt")
 

Ähnliche Java Themen

Neue Themen


Oben