Bestimmte Zahlen färben...


Cashmoney

Grünschnabel
hallo an alle...

ich habe hier ein Fenster der durch einem Startknopf nach der Reihe die Zahlen ausgibt. läuft auch alles wunderbar nun habe ich ein problem und nach einer erfolgslosen suche habe ich leider nichts passendes gefunden wie ich das umsetzen kann und zwar
Will ich bei der ausgabe von den Zahlen die primzahlen automatisch in einer bestimmten Farbe färben(z.B. Red)..

Die Primzahlen habe ich auch separat programmiert nur ich bekomme die gemeinsam nicht zum laufen

suche schon seit Tagen nach einer Lösung nur leider nichts gefunden oder irgendwas was mir weiterhilft ..

wäre euch sehr Dankbar wenn ihr mir helfen würdet...

hier der 1 code:

Code:
	public static void main(String[] args) {

		new Gridtest();
	}

	public void actionPerformed(ActionEvent e) {

		((JButton) e.getSource()).setEnabled(false);

		System.out.println("Action Performed");
		Thread t = new Thread() {
			public void run() {

			
				int limit = 26;
		
	//   HIER SOLL ES GESCEHEN MIT DER PRIM AUSGABE 
	// HIER HABE ICH WAS MIT ARRAY AUSPROBIERT NUR ZUR  TESTZWECKE		
				
				int[] primes ={ 3 }; 


				for (int i = 2; i <= limit; i++)

				{
					System.out.println(+i);
					JPanel numbr = new JPanel();
					JLabel nr = new JLabel("" + i);
					nr.setHorizontalAlignment(SwingConstants.CENTER);

				
					if ( primes[0]== i)
					{
						nr.setForeground(Color.ORANGE);
					}

							
			
					
					
					
					zahlen.add(nr);
					zahlen.validate();
					try {
						Thread.sleep(350);
					} catch (InterruptedException ie) {
						System.out.println("");

					}

				}
			}
		};
		t.start();
	}

}




Bin noch neu im Bereich Java .... Es würde mir extrem weiterhelfen wenn Ihr mir genau sagt wie man das anstellt.. Bin seit Tagen am durhcstöbern und komme einfach nicht weiter ...
 
Zuletzt bearbeitet:

Firecloud

Mitglied
Wo sollen die Zahlen den ausgegeben werden? Auf der Console oder in einem Label oder Ähnlichem.
Ich bin zwar kein Java Profi, aber soweit ich weiß kann man die Ausgaben auf der Konsole nicht farbig machen(falls ich Quatsch erzähle verbessert mich^^).


Edit: öhm sry...den ersten Code, hat er mir nur die Hälfte geladen und angezeigt.....also doch im Frame und nicht Konsole...sry
 
Zuletzt bearbeitet:

Cashmoney

Grünschnabel
Die zahlen gibt er ja soweit aus! Er soll halt bei der Ausgabe der Zahlen (in dem Fall 2- 26) nur die Primzahlen färben (sprich 2,3,5,7 etc..) Ich weis nur nicht wie ich das umsetzen soll (primberechnung habe ich auch Separat codiert wie mans oben sehen kann) ... hab vieles ausprobiert nur kein Erfolg =(
 

Firecloud

Mitglied
Den Teil aus der Gridtest Klasse:
Code:
/   
HIER SOLL ES GESCEHEN MIT DER PRIM AUSGABE 
	// HIER HABE ICH WAS MIT ARRAY AUSPROBIERT NUR ZUR  TESTZWECKE		
				
				int[] primes ={ 3 }; 


				for (int i = 2; i <= limit; i++)

				{
					System.out.println(+i);
					JPanel numbr = new JPanel();
					JLabel nr = new JLabel("" + i);
					nr.setHorizontalAlignment(SwingConstants.CENTER);

				
					if ( primes[0]== i)
					{
						nr.setForeground(Color.ORANGE);
					}

wurde ich wie folgt abändern:

Code:
//   HIER SOLL ES GESCEHEN MIT DER PRIM AUSGABE 
	// HIER HABE ICH WAS MIT ARRAY AUSPROBIERT NUR ZUR  TESTZWECKE		
				



				for (int i = 2; i <= limit; i++)

				{
					System.out.println(+i);

					JLabel nr = new JLabel("" + i);
					nr.setHorizontalAlignment(SwingConstants.CENTER);

				
					if ( Primz.istPrimzahl(i))
					{
						nr.setForeground(Color.ORANGE);
					}

Ohne Viel an deinem Code zu ändern würde ich das so machen. Ich habe die If Bedingung geändert, sowie zwei zeilen entfernt, die ich für überflüssig hielt ^^
Hoffe das hiflt. Kannst ja mal posten, obs geklappt hat oder nicht XD
 

takidoso

Erfahrenes Mitglied
Du köntest die Primzahlen in eine JList oder sogar in einem JTable ausgeben lassen. Dann müstest Du es mit der Implementierung eines entsprechenden Renderes die gewünschten Zahlen farbig darstellen.
 

Cashmoney

Grünschnabel
Es klappt tatsächlich.... oh man durch so eine kleine Änderung.... Ich danke dir....

noch eine kurze Frage was muss ich genau codieren so das er die primzahlen erst nach der aufzählung der normalen zahlen die Primzahlen färbt..
Er soll normal nach der Reihe ausgeben und dann die prims färben...momentan tut er beides ausgeben, nur er soll nach der ganz normalen ausgabe(2-26) erst dann die prims färben..
hat es was mit sleeper zu tun :/ ?.....
 
Zuletzt bearbeitet:

Firecloud

Mitglied
Also er soll 1-26 ausgeben und dann mit einem Schlag alles rot färben was ne Primzahl ist?

Edit: hast grad deinen beitrag geändert.. lol.

der sleeper den du grade drin hast der gibt nur den zeitlichen abstand zwischen deinen Zahlen an. hat direkt nix mit den Primzahlen zu tun
 
Zuletzt bearbeitet:

Firecloud

Mitglied
Vorneweg: Ich bin selbst noch (fast) ein Anfänger, deshalb keine gewähr^^. Wahrscheinlich gibt es besser und elegantere Möglichkeiten, aber ich geb mein Bestes um zu helfen^^


Also grob gesagt, hab ich das jetzt so gemacht, dass die erste schleife die zahlen ausgibt und die zweite schleife färbt sie dann orange.
Schau dir den Code genau an, ich hab einiges geändert, kannst es ja deinen Wünschen anpassen^^. Falls Fragen sind, frag ruhig.
Ich bin aber erst gegen abend (6UHR) wider da, dann kann ich weiter helfen, fallste hilfe brauchst^^

Code:
				// HIER SOLL ES GESCEHEN MIT DER PRIM AUSGABE
				// HIER HABE ICH WAS MIT ARRAY AUSPROBIERT NUR ZUR TESTZWECKE

				JLabel[] nr = new JLabel[limit];
				for (int i = 0; i < limit; i++)

				{
					System.out.println(+i);

					nr[i] = new JLabel(""+(i+1));
					nr[i].setHorizontalAlignment(SwingConstants.CENTER);

					zahlen.add(nr[i]);
					zahlen.validate();
					try {
						Thread.sleep(50);
					} catch (InterruptedException ie) {
						System.out.println("");

					}

				}

				for (int j = 0; j < nr.length; j++) {
					System.out.println(+j);
					if (Primz.istPrimzahl(Integer.valueOf(nr[j].getText()))) {
						nr[j].setForeground(Color.ORANGE);
					}
					try {
						Thread.sleep(50);
					} catch (InterruptedException ie) {
						System.out.println("");

					}
				}
			}
		};
		t.start();
	}

Edit: achso, das sleep in beiden schleifen hab ich auf 50 gesetzt, damit ich beim Testen nicht so lange brauche^^, kannst es gerne wieder auf 350 setzen
 

Cashmoney

Grünschnabel
Ich danke dir vielmals ...es klappt einwandfrei genau wie ich es haben wollte ... sollten weitere Feature hinzukommen^^ werde ich mich wieder melden =)..

danke dir nochmals
 
Zuletzt bearbeitet:

Forum-Statistiken

Themen
272.355
Beiträge
1.558.612
Mitglieder
187.829
Neuestes Mitglied
AlDi31