You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

RedOne

Unregistered

1

Thursday, October 13th 2011, 6:46pm

BlueJ geschlossene Flächen ausfüllen

Guten Tag,

ich komme sofort zur Sache :). Wir haben in der Schule angefangen mit BlueJ zu arbeiten. Wir haben den Auftrag bekommen Nationalflaggen zu Zeichnen. Ich habe den Auftrag bekommen die türkische Flagge zu programmieren. Wie dem auch sei, ich habe ein großen Problem, denn ich weiß nicht wie ich geschlossene Flächen ausfüllen kann, sprich, ich hab den Umriss des Sterns, doch die Innenflächen sind nicht ausgefüllt. Wenn einer so nett wäre und mir die Befehle aufschreiben und eventuell auch was dazu erzählen könnte, wäre ich ihm äußerst dankbar.

Dankesehr

2

Friday, October 14th 2011, 12:42pm

Ich gehe mal davon aus, dass du bereits eine Klasse benutzt, die von JComponent abgeleitet ist.
Das Füllen geht dann leicht so:

Java Quellcode

1
2
3
4
5
6
7
8
@Override
public void paintComponent(final Graphics graphics) {
    final Graphics2D g = (Graphics2D)graphics;
    final GeneralPath path = new GeneralPath();
    //mit dem path den Stern zeichnen -> siehe Doku moveTo()/lineTo()
 
    g.fill(path);
}

RedOne

Unregistered

3

Friday, October 14th 2011, 3:34pm

Danke für deine Antwort aber da verstehe ich nur Bahnhof. :D

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import sum.kern.*;
/**
* Beschreiben Sie hier die Klasse TürkeiFahne.
* 
* @author (Ihr Name) 
* @version (eine Versionsnummer oder ein Datum)
*/
public class TürkeiFahne
{ Bildschirm screen;
Buntstift pen;
 
public TürkeiFahne()
{ screen = new Bildschirm(1000,1000);
pen = new Buntstift();
 
pen.hoch();
pen.bewegeBis(100,250);
pen.runter();
pen.setzeFarbe(Farbe.ROT);
pen.setzeFuellMuster(Muster.GEFUELLT);
pen.zeichneRechteck(800,500);
pen.hoch();
pen.bewegeBis(400,500);
pen.runter();
pen.setzeFarbe(Farbe.WEISS);
pen.zeichneKreis(150);
pen.setzeFarbe(Farbe.ROT);
pen.bewegeBis(427,500);
pen.zeichneKreis(127);
pen.setzeFarbe(Farbe.WEISS);
pen.hoch();
pen.bewegeBis(537,500);
pen.runter();
pen.bewegeBis(655,460);
pen.bewegeBis(583,565);
pen.bewegeBis(583,435);
pen.bewegeBis(655,540);
pen.bewegeBis(537,500);
 
}
 
}


Das wäre jetzt meine "bisher" bearbeitete Version einer Flagge. Den Stern muss ich mit weißer Farbe ausfüllen. -_-

4

Friday, October 14th 2011, 4:32pm

Okay, ich wusste nicht, dass ihr da eine Klasse Buntstift habt; hat wahrscheinlich dein Lehrer geschrieben.
Gibt es nicht die Möglichkeit, setzeFüllmuster() mit einem rein weissen "Muster" zu zeichnen.
Oder gibt es vlt ein setzeFüllFarbe ?

Wenn dein Lehrer dir die Aufgabe gibt, muss es ja auch umsetzbar sein - hier kann dir aber (ausser dein Lehrer) da niemand helfen.
Verlange im Zweifelsfall doch mal die Dokumentation zu der .jar deines Lehrers.

Wenn du genug Motivation hast, kannst du es natürlich auch mit den Standardmitteln von Java tun;
du bräuchtest nur zwei Klassen, eine für das Fenster und eines für die Flagge.

greet

RedOne

Unregistered

5

Friday, October 14th 2011, 5:02pm

Ne ne, ich hab' alles selber geschrieben. Es wäre wirklich nett von dir und ich wäre dir auch dafür dankbar, wenn du mir die Methode mit der 2.Klasse Schritt für Schritt schreiben könntest.

6

Friday, October 14th 2011, 6:43pm

Ist echt nicht viel Code; ich habe mal eine Fantasie Flagge gebaut, ist selbsterklärend, was du für dich anpassen musst:

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@SuppressWarnings("serial")
public class MainWindow extends JFrame {
	public static void main(final String... args) {
		new MainWindow();
	}
 
	public MainWindow() {
		super("Flagge");
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				setupUI();
				pack();
				setLocationRelativeTo(null);
				setVisible(true);
			}
		});
 
		setDefaultCloseOperation(EXIT_ON_CLOSE);
	}
 
	private void setupUI() {
		add(new FlagComponent(), BorderLayout.CENTER);
	}
}


Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@SuppressWarnings("serial")
public class FlagComponent extends JComponent {
	public FlagComponent() {
		setPreferredSize(new Dimension(400, 300));
	}
 
	@Override
	protected void paintComponent(final Graphics graphics) {
		final Graphics2D g = (Graphics2D)graphics;
 
		final int w = getWidth();
		final int h = getHeight();
 
		g.setColor(Color.BLUE);
		g.fillRect(0, 0, w, h/3);
		g.setColor(Color.GREEN);
		g.fillRect(0, h/3, w, h/3);
		g.setColor(Color.PINK);
		g.fillRect(0, 2*h/3, w, h/3);
 
		final GeneralPath path = new GeneralPath();
		path.moveTo(w/3, h/2);
		path.lineTo(w/3 + 25, h/2 + 25);
		path.lineTo(w/3 - 25, h/2 + 25);
		path.lineTo(w/3, h/2);
 
		g.setColor(Color.RED);
		g.fill(path);
	}
}

RedOne

Unregistered

7

Friday, October 14th 2011, 7:22pm

Danke, dass du dir die Mühe gemacht hast, aber ich kann wirklich nichts damit anfangen -_-

Danke nochmals. Ich bräuchte eine Funktion, welches eine geschlossene Fläche "ausradiert" bzw. "ausfüllt", ohne diese Elemente sieht es so aus, als ob ich nicht in der Lage eine Flagge der türkischen Nation anzufertigen.

Dir nochmals vielen Dank, Runnable!

8

Sunday, October 16th 2011, 5:54pm

Brauchst du noch Hilfe oder ist das Problem schon gelöst? Ich könnte dir da evtl. weiter helfen

RedOne

Unregistered

9

Monday, October 17th 2011, 8:04pm

Ich brauche noch weiterhin Hilfe. Danke für dein Angebot, wie könntest du mir denn weiterhelfen??

10

Monday, October 17th 2011, 10:53pm

Ich habe grad mal kurz drüber geschaut. Ich bin mir nicht sicher ob dies so geht da ich grad nur kurz zeit hatte in das Projekt rein zu schauen , aber ich kann mir das Projekt morgen nochmal angucken.

Wenn du den Stern kleiner zeichnen könntest , könntest du die Lienien Breite so vergrößern das der Stern "gefüllt" aussieht.

Quoted

pen.setzeLinienBreite(ZAHL);

11

Tuesday, October 18th 2011, 7:08am

Die Sache mit der Linienbreite habe ich auch schon versucht -_-
Ich brauche eine Funktion, mit der ich die Lücken ausfüllen kann.
In der Mitte des Stern wäre ein Pentagram, und an den geraden Flächen des Pentagrams sind die Sternspitzen angebracht.

12

Tuesday, October 18th 2011, 1:32pm

Zeig mal deine Klasse "Buntstift".

13

Tuesday, October 18th 2011, 2:00pm

Es ist eine Klasse aus Stift und Maus, also SuM. Oben habe ich alles kopiert, was in meinem Dokument steht. Ich könnte dir jetzt nicht zeigen wie meine Buntstiftklasse aussieht.

14

Tuesday, October 18th 2011, 3:32pm

Ich denk du hast

Quoted from ""RedOne""

alles selber geschrieben


Warum lügst du uns an, in einem anderen Thread hat ein anderer ein anderes Problem mit SuM.
Ausserdem zeigst du überhaupt keine Motivation, selbst etwas zu machen.

Jedenfalls liefert dir meine aufgezeigte Lösung alles was man wissen muss, um SuM so zu erweitern, dass man Flächen füllen könnte.

15

Wednesday, October 19th 2011, 12:51pm

Ich denk du hast

Quoted from ""RedOne""

alles selber geschrieben


Warum lügst du uns an, in einem anderen Thread hat ein anderer ein anderes Problem mit SuM.
Ausserdem zeigst du überhaupt keine Motivation, selbst etwas zu machen.

Jedenfalls liefert dir meine aufgezeigte Lösung alles was man wissen muss, um SuM so zu erweitern, dass man Flächen füllen könnte.

Was erzählst du für ein Stuss? Ich habe die Flagge selber geschrieben! Ich kam nur nicht mit der Ausfüllung des Sterns weiter, und so versuchte ich mir durch Das Forum Hilfe zu verschaffen, ich habe mich für eure Beiträge bedankt, doch ich kann mit deinem Java-Coding nichts anfangen.
Ich wurde soweit nicht eingeschult. Ich suche im Internet nach Lösungen und zeige auch Engagement! Und du unterstellst mir, dass ich euch anlüge? Ich glaub' ich lese nicht richtig!

16

Thursday, October 20th 2011, 6:17pm

Zugegeben, der Java text von Runnable bringt dich wirklich nicht weiter.
Was du da oben gepostet hast Runnable ist zwar Java , aber klein BlueJ SuM.
Die Klasse SuM wird komplett anders geschrieben und angewandt. Ich hatte die Tage leider wenig zeit , ab morgen mittag allerdings habe ich Wochenende und da gucke ich mir dein Projekt nochmals genauer an wenn du möchtest.

MfG

17

Friday, October 21st 2011, 2:54pm

Habe mir gerade mal die SuM-Doku angeschaut: die sagt eindeutig, dass setzeFüllmuster nur für Kreise und Rechtecke Wirkung hat; die Aufgabe, einen gefüllten Stern zu zeichnen, geht also nur über den Weg, mehrere Linien nebeneinander zu setzen.

Was auch ginge:
Bildschirm hat eine Methode g(), die das darunterliegende Graphics Object bereitstellt; ist aber protected.
D.h. du kannst von Bildschirm erben, über g() den Graphickontext beschaffen und darauf dann alles aufrufen, was Graphics2D bietet (wie oben gezeigt).

18

Friday, October 21st 2011, 4:21pm

Die methode (g) bringt ihm nichts da , wenn er erst mit BlueJ angefangen hat (Siehe ersten post) , diesen Befehl nichteinmal kennt.

Similar threads

Social bookmarks