Zahlenfolge in Frame ausgeben

Status
Nicht offen für weitere Antworten.

Vril

Bekanntes Mitglied
Hab ein kleines Lottoprogramm geschrieben. Die Ziehung funktioniert und wird sauber in der DOS Box ausgegeben. Jetzt habe ich noch ein Frame dazu gemacht und möchte die Zahlen dort auch ausgeben.

Für die DOS Box schreibe ich: System.out.println("Die Zahlen: "+ i ); und die Zahlen werden der Reihe nach ausgegeben.

Für das Frame schreibe ich: g.drawString("Die Zahlen: "+ i , 50, 50); und die Zahlen werden alle übereinander geschrieben, so dass man nichts mehr erkennen kann.

Hat zufällig jemand eine Idee wie man das im Frame lösen kann, damit die Zahlen auch der Reihe nach ausgegeben werden und nicht übereinander geschrieben werden?

Code:
import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class Lotto_awt extends Frame {
	public int i;
	public Lotto_awt(String title) {
		super(title);
		setLayout(null);
		setSize (300,300);
		setVisible(true);
	}
	
	public void paint (Graphics g){
	
		
		BitSet b = new BitSet();
		Random r = new Random();
		
		System.out.println("*********************************\n");
		System.out.print("Mein Lottotip: ");
		int cnt = 0;
		while (cnt < 6) {
			int num = 1 + Math.abs(r.nextInt()) % 49;
			if (!b.get(num)) {
				b.set(num);
				cnt++;
			}
		}
		for (int i = 1; i <= 49; i++){
			if (b.get(i)) {
				System.out.print(i+ " ");
				g.drawString("Die Zahlen: "+i, 50, 50);
        		
			}
		}System.out.println("\n");
		
		}
	public static void main (String[] args){
	
   new Lotto_awt("Die Lottozahlen");
	}

}
 
R

Roar

Gast
erhöhe die y koordinate in drawString() bei jedem schleifendurchlauf um g.getFontMetrics().getHeight() dann geht es.
 

Vril

Bekanntes Mitglied
@Roar
Also schon mal danke. Hab mit g.getFontMetrics().getHeight() herumexperimentiert. Liefert mir den Wert 16 zurück. Aber irgendwie schaffe ich es nicht das die Lottozahlen lesbar angezeigt werden.

Hat jemand vielleicht eine ausführlichere Lösung parat?
 

Wildcard

Top Contributor
g.getFontMetrics().getHeight() liefert dir die Höhe der aktuellen Schrift in Pixel.
Wenn du bei drawString also pro Zahl diesen Wert auf die y-Koordinate addierst, kann man alles lesen.
Einfachste Möglichkeit das bei dir zu machen:
Code:
     int counter = 0;
      for (int i = 1; i <= 49; i++){ 
         if (b.get(i)) { 
            System.out.print(i+ " "); 
            g.drawString("Die Zahlen: "+i, 50, 50+counter*g.getFontMetrics().getHeight());
            counter++;
               
         } 
      }
 

Vril

Bekanntes Mitglied
Jetzt habe ich versucht das ganze auch einmal über ein Label auszugeben. Jedoch habe ich hier wieder ein neues Problem. Auf dem Label wird nur die letzte Zahl der Ziehung ausgegeben.

Hat hierzu evtl. jemand eine Idee damit alle Zahlen auf dem Label ausgegeben werden?

Code:
import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class Lotto_awt extends Frame {
	String trenn = ",";
	String ergebnis;
	Button neu, ende;
	Label anzeige1, anzeige2;
	Panel panel1, panel2;
	
	
	public Lotto_awt(String title) {
		super(title);
		setSize (300,300);
		
		 Panel panel1 = new Panel();
     panel1.setLayout(new GridLayout(3,1));
     panel1.add (anzeige1 = new Label ("Anzahl..."));
     panel1.add (anzeige2 = new Label ("Ziehung.."));
     
     Panel panel2 = new Panel();
     panel2.setLayout(new FlowLayout(FlowLayout.RIGHT));
     panel2.add(new Button("Neue Ziehung"));
     panel2.add(new Button("Ende"));
     //Hauptfenster
     setLayout(new BorderLayout());
     add(panel1, BorderLayout.CENTER);
     add(panel2, BorderLayout.SOUTH);
		
		 setVisible(true);
	}
	
	public void paint (Graphics g){
	
		anzeige1.setText("    Die Lottozahlen für die nächste Ziehung");

		BitSet b = new BitSet();
		Random r = new Random();
		
		System.out.println("*********************************\n");
		System.out.print("Mein Lottotip: ");
		
		int cnt = 0;
		while (cnt < 6) {
			int num = 1 + Math.abs(r.nextInt()) % 49;
			if (!b.get(num)) {
				b.set(num);
				cnt++;
			}
		}
		for (int i = 1; i <= 49; i++){
			if (b.get(i)) {
								
				System.out.print(i+ " "); 
				System.out.println("");
            
        anzeige2.setText(""+i);
        //g.drawString(""+i+",",-150+cnt*2*g.getFontMetrics().getHeight(),150); 
        //    cnt++;           
                
         } 
      }
		}
	public static void main (String[] args){

   new Lotto_awt("Die Lottozahlen");
	}

}
 

bambi

Bekanntes Mitglied
Das liegt sicher an der Zeile

Code:
anzeige2.setText(""+i);

wenn ich mich nicht irre. setText() ueberschreibt immer alles, was in Deinem Label steht. Sieh einfach mal in der API nach. Da findest Du bestimmt eine Methode, die immer nur den Text anhaengt - kannst natuerlich auch erst den Text vom Label auslesen, dann den neuen dranhaengen und dann wieder alles mit setText einfuegen - ist aber nicht "so schoen" und viel zu umstaendlich... Also lieber suchen.
 

Wildcard

Top Contributor
Das liegt ganz einfach daran, dass du bei jeder Zahl den Text löscht.
Einfache Methode:
Code:
anzeige2.setText(anzeige2.getText()+" "+i);
besser währe es alles umzuschreiben.
Mach dir eine Methode die die Zufallszahl berechnet, mach einen einzigen String draus und setz den String
dann in das Label. Die paint Methode brauchst du dann gar nicht mehr.
Ganz wichtig:
Wenn man paint() überschreibt macht man darin nie mehr als unbedingt nötig!
Wenn möglich wird darin überhaupt nichts berechnet.
 

Vril

Bekanntes Mitglied
@Wildcard
Danke hat geklappt! Du hast schon recht, so ist es jetzt etwas schlecht gelöst. Hab auch gemerkt das es so immer umständlicher wird.... na ja, hoffe das ich es nächstesmal sauber aufbaue! :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Zahlenfolge Java Basics - Anfänger-Themen 13
B Zahlenfolge von Queue in Stack Java Basics - Anfänger-Themen 29
K Rekursion einer Zahlenfolge (Ab- und Aufzählung) Java Basics - Anfänger-Themen 6
D Konsolenausgabe Zahlenfolge Rekursion Java Basics - Anfänger-Themen 3
K Zahlenfolge ArrayList Java Basics - Anfänger-Themen 3
D Zahlenfolge in Java Java Basics - Anfänger-Themen 8
T Min und Max einer Zahlenfolge bestimmen Java Basics - Anfänger-Themen 7
B Algorithmus zum entmischen einer Zahlenfolge Java Basics - Anfänger-Themen 15
C Ungerade Zahlenfolge ausgeben Java Basics - Anfänger-Themen 11
F zufällige Zahlenfolge Java Basics - Anfänger-Themen 8
E Zahlenfolge des einen Arrays in zweiten enthalten Java Basics - Anfänger-Themen 7
R integer zahlenfolge speichern, ausgeben Java Basics - Anfänger-Themen 1
B zahlenfolge einlesen und in array umwandeln Java Basics - Anfänger-Themen 7
S Zahlenfolge ausgeben Java Basics - Anfänger-Themen 5
B Zahlenfolge addieren Java Basics - Anfänger-Themen 5
E Zahlenfolge ausgeben Java Basics - Anfänger-Themen 4
D Zahlenfolge ausgeben Java Basics - Anfänger-Themen 19
X Zahlenfolge in Int-Array einlesen? Java Basics - Anfänger-Themen 7
M If/Else mit Zahlenfolge Java Basics - Anfänger-Themen 13
Antoras Zahlenfolge mit Schleifen ausgeben Java Basics - Anfänger-Themen 10
M Zahlenfolge verwenden Java Basics - Anfänger-Themen 8
kulturfenster Zahlenfolge einlesen Java Basics - Anfänger-Themen 8
Alex_99 Aktion ausführen wenn Frame disposed wurde Java Basics - Anfänger-Themen 5
frager2345 Fensterklasse, Wie auf Frame im Listender zugreifen (ItemEvents) Java Basics - Anfänger-Themen 7
S GUI Frame wechseln Java Basics - Anfänger-Themen 15
C Exportierte JAR öffnet zweiten Frame nicht mehr Java Basics - Anfänger-Themen 7
C Erkennen ob Frame geschlossen wurde Java Basics - Anfänger-Themen 2
C Erste Schritte Spieler an anderen Frame weitergeben Java Basics - Anfänger-Themen 23
G Probleme bei Frame aufgaben Java Basics - Anfänger-Themen 6
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
S Interface (WindowBuilder) Panels in einen Frame einfügen Java Basics - Anfänger-Themen 10
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
M Erste Schritte Neuen Frame nur einmal offen haben Java Basics - Anfänger-Themen 6
schoenosrockos JButton füllt immer das ganze frame Java Basics - Anfänger-Themen 1
R Erste Schritte Frame mit Ladebalken und BestätigungsButton Java Basics - Anfänger-Themen 10
das_leon Interface Frame in einem Frame (Window Builder) Java Basics - Anfänger-Themen 2
Anfänger2011 Frame zeigt nicht gewünschtes Ergebnis an ... Java Basics - Anfänger-Themen 5
Z Object Kreis am Frame abprallen lassen! Java Basics - Anfänger-Themen 12
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
I Methoden Schwierikeiten mit Protokollfenster (Frame Objekt) Java Basics - Anfänger-Themen 4
A mehrere Panels in eigenen Klasssen in einem Frame Java Basics - Anfänger-Themen 16
J Extra Fenster (Frame) Java Basics - Anfänger-Themen 20
W Frame in anderer Klasse anzeigen lassen Java Basics - Anfänger-Themen 1
E Von Instanz des Dialogs auf das Frame zugreifen Java Basics - Anfänger-Themen 8
E 2. JFrame erkennt 1. Frame Java Basics - Anfänger-Themen 6
C Bild ins Frame laden und Objekte drüber legen Java Basics - Anfänger-Themen 1
R File chooser Dateien in frame anzeigen lassen Java Basics - Anfänger-Themen 5
L bestimmten Frame anzeigen lassen? Java Basics - Anfänger-Themen 6
H Textfeldinhalt löschen nachdem Frame geschlossen wird Java Basics - Anfänger-Themen 8
L Kalender Java Frame Java Basics - Anfänger-Themen 7
A Frame Java Basics - Anfänger-Themen 3
P Verwirrung mit AWT Frame und main Methode Java Basics - Anfänger-Themen 19
A Frame java Java Basics - Anfänger-Themen 3
D Frame schließt gleich alle Frames Java Basics - Anfänger-Themen 5
T udp -> bytearray -> image -> ausgabe via frame Java Basics - Anfänger-Themen 6
J Erste Schritte Speichern / Speichern unter / title Frame Java Basics - Anfänger-Themen 5
F Frame in Frame Java Basics - Anfänger-Themen 3
U GUI - resize frame Java Basics - Anfänger-Themen 13
J Open reading Frame Java Basics - Anfänger-Themen 4
J Erstelltes Frame wird nicht angezeigt Java Basics - Anfänger-Themen 2
K Frame öffnen klappt nicht?! Java Basics - Anfänger-Themen 36
JAVAnnik Anwendung nach Schließen vom letzen Frame Java Basics - Anfänger-Themen 9
B Referenz zu anderen Frame Java Basics - Anfänger-Themen 10
A Frame Background Java Basics - Anfänger-Themen 21
S Klassen Klassenname = Frame? Java Basics - Anfänger-Themen 11
R Eingefärbtes Panel wird in Frame nicht angezeigt Java Basics - Anfänger-Themen 10
I Java - Text in neuem Frame wird nicht angezeigt Java Basics - Anfänger-Themen 4
M Frame mit mehreren areas Java Basics - Anfänger-Themen 14
B Frame über Button öffnen Java Basics - Anfänger-Themen 8
R Button soll neuen Frame öffnen Java Basics - Anfänger-Themen 21
L Variablen Frame Variablen-Schleife Java Basics - Anfänger-Themen 3
D Neues Frame öffnen Java Basics - Anfänger-Themen 7
V Frame bleibt grau Java Basics - Anfänger-Themen 5
G Polygon in Frame zeichnen Java Basics - Anfänger-Themen 3
F frame wird nicht angezeigt? Java Basics - Anfänger-Themen 10
S 2 Panels in einen Frame Java Basics - Anfänger-Themen 5
H Panels in Frame einbinden Java Basics - Anfänger-Themen 3
E Frame neu Zeichnen Java Basics - Anfänger-Themen 3
A Bild wird auf Frame nicht angezeigt! Keine Fehlermeldung Java Basics - Anfänger-Themen 3
O Grafik in Frame laden Java Basics - Anfänger-Themen 9
T Frame öffnen Java Basics - Anfänger-Themen 6
I 1 Frame und mehrere Panels klappt nicht Java Basics - Anfänger-Themen 4
I JTable in bestehenden Frame integrieren Java Basics - Anfänger-Themen 6
Y Hilfe: JOGL / OPENGL in Frame Java Basics - Anfänger-Themen 2
J Frame schließen, Ereignis behandeln, Vorgang abbrechen Java Basics - Anfänger-Themen 4
Luk10 Frame schließen Java Basics - Anfänger-Themen 2
A Frame schließen!? Help! Java Basics - Anfänger-Themen 5
A Frame reagiert nicht Java Basics - Anfänger-Themen 6
H Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen Java Basics - Anfänger-Themen 7
J Frame bleibt schwarz beim Laden Java Basics - Anfänger-Themen 11
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
R Frame Inhalt ausrichten Java Basics - Anfänger-Themen 5
MisterSeven Java Swing - Wie Frame größe festlegen?! Java Basics - Anfänger-Themen 10
E Verständnisfrage Syntax: frame.getContentPane().add(button) Java Basics - Anfänger-Themen 11
Stillmatic1985 Label in einem Frame zentrieren Java Basics - Anfänger-Themen 4
A Grafik erstellen und in Frame einfügen Java Basics - Anfänger-Themen 17
A Java Frame per X schließen? Java Basics - Anfänger-Themen 7
H2SO3- image beim awt frame wegmachen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben