Grafische Oberfläche

Status
Nicht offen für weitere Antworten.

Tjong

Mitglied
Hallo zusammen,
Ich soll für die Schule bis in 2 Wochen ein Spiel schreiben (Mensch, ärgere dich nicht) und muss mich nun erstmal komplett in Grafiken in Java einarbeiten :/
Da das allerdings ein relativ komplexes Thema ist und wie gesagt bereits in 2 Wochen Abgabe ist, wollte ich mal fragen ob ihr mir bestimmte Funktionen und vllt. Artikel dazu empfehlen könntet, die man braucht um einem Applet ein Hintergrundbild zu geben, und weitere Grafiken dadrüber einzufügen...
Sry wenn das jetzt irgendwie noobisch ist oder so, aber naja irgendwie verzweifel ich langsam vor dem Riesenberg an Funktionen und weiß nicht Recht was ich jetzt davon benutzen kann/soll/muss. Im Moment habe ich es schon zu einem Hintergrundbild gebracht das als .jpg auf der Festplatte rumliegt und per:

Code:
	ImageIcon icon = new ImageIcon("Hintergrund.jpg", "Der Hintergrund");
	JLabel label1 = new JLabel(icon);
	...
	panel.add(label1);
	...
	Spielbrett.add(panel);
eingefügt wird, natürlich mit dem Erfolg das es zB. Buttons wegschiebt und andere Bilder habe ich noch nicht probiert :/

Jetzt hatte ich überlegt ob man das mit JTable machen könnte, aber da das alles so Riesenartikel sind, würde ich schon gerne wissen obs damit überhaupt geht, bevor ich dann unnötig Zeit mit dem Durchlesen von 52435 Seiten verschwende, wenns eh nicht funktioniert.

MfG
Tjong
 

Schandro

Top Contributor
Warum wollen eigentlich so viele Anfänger ihre Minispiele mit mehreren JComponents malen?? Nim doch einfach ein JPanel, und überschreib dessen paintComponent(Graphics g) Methode. Ist zwar ein kleines bisschen komplizierter, weil du hochrechnen must auf welchen "Feld" der Mausklick gelandet ist, das dürfte aber nicht so das große Problem werden. Dafür hast du enorm mehr Möglichkeiten, das Spielfeld zu gestalten.

Ein einziges Hinergrundsbild für alles ist dann auch kein Problem mehr.
 

Tjong

Mitglied
Schandro hat gesagt.:
Nim doch einfach ein JPanel, und überschreib dessen paintComponent(Graphics g) Methode.

Sry ich versteh das nicht ganz. Soll ich nur ein einzelnes Bild nehmen wo ich alles gleichzeitig draufmale oder wie? Weil spätestens die Spielsteine müssten ja "dynamisch" auf dem Feld ihre Position ändern =/
Wäre auch nett falls ihr nen Link zu nem Tutorial von sowas oder so hättet dann muss ich euch nicht weiter nerven ^^

Anonymous hat gesagt.:
frage ich mich, wie lange Du schon diese Aufgabe kennst.

Dein Nerven möchte ich habe :toll:

Ja ich weiß =/ Ich kenne die schon seit Anfang Dezember, aber naja die Motivation usw...
Naja auf jeden Fall schonmal Danke für die schnellen Antworten

MfG
Tjong
 

Schandro

Top Contributor
du erstellst hiermit ein neues JPanel und überschreibst gleichzeitig dessen paintComponent Methode:
Code:
JPanel panel = new JPanel(){
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		
	}
};

danach brauchst du nur panel auf dein Fenster zu adden. In die paintComponent Methode nach super.paintComponent(g); kannst du alles schreiben, um diesen Bereich zu malen. Dafür gibts zig Methoden in Graphics, kannst ja einfach die API besuchen.

Ein paar Beispiele:
Code:
JPanel panel = new JPanel(){
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		
		g.drawRect(5,5,30,10);
		g.drawOval(50,50,100,100);
		g.drawLine(0,90,90,0);
		
		g.setColor(Color.RED);
		g.fillRect(80,100,20,50);
		
		g.drawString("Hallo Welt",100,200);
		g.setFont(new Font("arial",Font.PLAIN,16));
		g.drawString("Hallo Welt",100,250);
		
		g.drawImage(myImage,300,300,null);		
	}
};

Um jetzt z.b. dynamisch deinen Spielstein zu malen, mach 2 int Klassenvariablen, einen für die x-Koordinate und einen für die y-Koordinate. Diese benutzt du in paintComponent, um den Spielstein zu malen. Wenn die Position des Spielsteins auf dem Fenster während des Spiels geändert werden soll, dann brauchst du nur die beiden Variablen zu ändern und panel.repaint() aufrufen.
 

Tjong

Mitglied
Woah erstmal vielen Dank, ihr habt mir schon ne ganze Menge weitergeholfen :)

Funktioniert auch schon fast alles so, dass ich mal richtig anfangen kann.
Wenn ihr mir noch bei einem letzten Problem helfen würdet:
Wie lese ich eine Bilddatei als Datentyp "Image" aus einer Datei rein, oder noch besser wie ich kann ich die Datei dann auch später fest in der .jar verankern?
Weil im Moment liegt die erstens noch in einem Ordner rum und zweitens hab ich nach 6 stündigem recherschieren am Dienstag es nur mit der
Code:
ImageIcon icon = new ImageIcon("Hintergrund.jpg");
Methode hinbekommen, aber in "drawImage" wird nunmal ein Datentyp "Image" und nicht "ImageIcon" gebraucht.
Deswegen bräucht ich vllt. ne andere Funktion.
Also nochmal vielen Dank bis jetzt :D

MfG Tjong
 

Fu3L

Top Contributor
Code:
//Vorrausgesetzt, das Bild liegt im Ordner bilder in deinem Projekt
URL location = getClass().getClassLoader().getResource("bilder/Hintergrund.jpg");
		
BufferedImage pic = null;
		
try {
			
   pic = ImageIO.read(location);
			
} catch(Exception ex) {
			
   System.out.println("Fehler beim Laden: " + ex);
   //Hier eventuell das Programm abschießen
			
}

Wenn dus so machst, wird das Bild von Eclipse gleich mit ins jar gepackt, weils sich ja im Projektordner befindet... Das ganze kann man auch schön als Methode auslagern, da du ja sicher mehr als nur ein Bild laden musst...
 

Tjong

Mitglied
Jo das hab ich jetzt grad mal eingefügt, und ich glaube das war auch 1 meiner 4133 Versuche vom Dienstag
Nur bekomme ich da als Resultat immer ein:
Fehler beim Laden: java.lang.IllegalArgumentException: input == null!
Dabei habe ich das Bild wie du gesagt hast im Projektordner (da wo auch die Ordner bin und src drinliegen).
 

Tjong

Mitglied
Naja viel kann man ja an "Hintergrund.jpg" nicht falsch schreiben ^^
Bin mir nur nicht ganz sicher ob der Projektordner der Richtige ist :/
Gibts da vllt. ne Möglichkeit sich den Pfad zum Projektordner anzeigen zu lassen?
 

Fu3L

Top Contributor
also wenn du es so machst, wie ich es machen würde, mit einem Bilder Ordner, so müsste der im obersten Verzeichnis deines Projektes liegen, sprich:

Code:
Projekt:
           packages
           packages
           bilder:
                         Hintergrund.jpg

Je nach Einstellungen kann das natürlich abweichen, weils ja auch noch src und bin ordner gibt...

Die Exception mit input == null kommt tatsächlich dann, wenn der Pfad inkorrekt ist, also du irgendwo einen Tippfehler hast...

(Zur Not schieb deinen Bilderordner mal rum, bis es tut^^)
 

Tjong

Mitglied
Also ich hab jetzt mal nen Test gemacht, ich habe als Pfad nur "Hintergrund.jpg" angeben und in JEDEN wirklich JEDEN Unterordner den mein Workspace überhaupt hat, eine "Hintergrund.jpg" reingepackt und der Fehler exestiert weiterhin...

Hängt das iwie damit zusammen dass mein Workspace auf nem USB-Stick ist?

Ariol hat gesagt.:
Hast du beim Dateinamen auf Groß-/Kleinschreibung geachtet.

Kla hab ich das, war so ziemlich das erste was ich kontrolliert habe, halt ob der Dateiname richtig geschrieben ist


EDIT:

argh hab bei dem Pfadnamen vor dem jpg-Überall-reinkopieren-Test vergessen das "bilder/" davor zu löschen hab jetzt rausgefunden dass die .jpg im "bin" Ordner drinliegen muss

Funktioniert jetzt alles soweit wunderbar
Vielen dank für die viele Hilfe =D :toll:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
TomatenBrot447 Programmieraufgabe - Grafische Oberfläche- falsches Ergebnis? Java Basics - Anfänger-Themen 15
S Grafische Oberfläche Quellcode ändern Java Basics - Anfänger-Themen 8
B Grafische Oberfläche für Java-Programm Java Basics - Anfänger-Themen 5
J Editor für grafische Oberfläche Java Basics - Anfänger-Themen 12
F Grafische Oberfläche.ist das kompliziert? Java Basics - Anfänger-Themen 7
G Grafische Oberfläche mit Buttons und Actionlistener? Java Basics - Anfänger-Themen 27
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7
H Mehrsprachigkeit und grafische Oberflächen Java Basics - Anfänger-Themen 4
R Grafische Benutzeroberfläche GUI nachträglich einbauen Java Basics - Anfänger-Themen 3
T Grafische programme - Variblen Schrift Java Basics - Anfänger-Themen 2
D Viele grafische unterschiede von Windows xp zu Windows 7 Java Basics - Anfänger-Themen 3
T Einstieg in "grafische Progammierung" + Rechnen in Flussdiagramm Java Basics - Anfänger-Themen 2
I Grafische Benutzeroberflächen - welche Komponente nehme ich am besten? Java Basics - Anfänger-Themen 13
shiroX OOP Türme von Hanoi - einfache grafische Ausgabe Java Basics - Anfänger-Themen 2
K Panels, grafische Oberflächen Java Basics - Anfänger-Themen 7
K sich bewegende grafische Objekte Java Basics - Anfänger-Themen 68
N Grafische Programmierung mit jeweils anderen Bildern bei versch. Ergebnissen Java Basics - Anfänger-Themen 9
F grafische Anzeige von Werten Java Basics - Anfänger-Themen 2
A Grafische Umsetzung von Aktienkursen Java Basics - Anfänger-Themen 2
M JavaSpiel ohne grafische Umsetzung Java Basics - Anfänger-Themen 3
U Grafische Eingabe und ausgabe mit java Java Basics - Anfänger-Themen 5
V Grafische Auswertung (Ampel-System) Java Basics - Anfänger-Themen 12
B Grafische Darstellung einer Emailverteilerliste Java Basics - Anfänger-Themen 2
TechGirl JAVA GUI Oberfläche Umkreisung - wie heißt dieses Element? Java Basics - Anfänger-Themen 2
S Oberfläche aktualisiert nicht wegen sleep Java Basics - Anfänger-Themen 1
C class in main aufrufen (SWT Oberfläche) Java Basics - Anfänger-Themen 5
K Compilierfehler bei grafischer Oberfläche Java Basics - Anfänger-Themen 7
B eclipse Oberfläche zurück setzen Java Basics - Anfänger-Themen 2
B JPanel-Oberfläche speichern Java Basics - Anfänger-Themen 9
M Lottozahlen mit grafischer Oberfläche Java Basics - Anfänger-Themen 6
S Gui Oberfläche wird nicht richtig dargestellt Java Basics - Anfänger-Themen 5
D Oberfläche machen Java Basics - Anfänger-Themen 8
K Warum updated sich die Oberfläche nicht?! Java Basics - Anfänger-Themen 4
G Framework für eine Flexible Oberfläche! Java Basics - Anfänger-Themen 9
C Oberfläche & anderes Java Basics - Anfänger-Themen 6
C Oberfläche abscannen Java Basics - Anfänger-Themen 13
G Applet Oberfläche Java Basics - Anfänger-Themen 3
K Programm von selbsterstellter Oberfläche starten Java Basics - Anfänger-Themen 2
G Swing Oberfläche Java Basics - Anfänger-Themen 12
G JAR File will nicht von Oberfläche aus gestartet werden Java Basics - Anfänger-Themen 2
eQui Oberfläche mit Graphics zeichnen Java Basics - Anfänger-Themen 11
S Darstellungsfehler auf der Oberfläche Java Basics - Anfänger-Themen 6
M Datenbankabfrage über eine Java Oberfläche Java Basics - Anfänger-Themen 3
P Java Oberfläche mit Windows Feeling Java Basics - Anfänger-Themen 17
S Oberfläche - erhöht Java Basics - Anfänger-Themen 8
Y Grafikanwendungen zeigen keine Oberfläche an Java Basics - Anfänger-Themen 9
J Buttons mit graphischer, selbstgezeichneter Oberfläche Java Basics - Anfänger-Themen 9
Paule 2 Fragen zur grafischen Oberfläche Java Basics - Anfänger-Themen 5
S Graphische Oberfläche Java Basics - Anfänger-Themen 7
J Location von Oberfläche speichern Java Basics - Anfänger-Themen 6
G Laden und Speichern der Konfiguration einer gra. Oberfläche Java Basics - Anfänger-Themen 4
H Thread mit AWT-Oberfläche kombinieren Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben