Bubble Gum (18.04.2013), DMW007 (18.04.2013), ThunderStorm (19.04.2013)
-
18.04.2013, 18:16 #1
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.937 Times in 1.180 Posts[Java] Aus Klasse heraus auf Applet zeichnen
Hallo.
Ich suche jemanden der mir mal kurz bei Java helfen kann, es geht um Grafiken zeichnen..
Vllt. kann mir jemand über Teamviewer helfen..
Bieten kann ich leider nichts
-
18.04.2013, 18:44 #2
- Registriert seit
- 19.11.2011
- Beiträge
- 496
Thanked 412 Times in 268 PostsAW: Java - Suche kurz mal Hilfe
Stell' deine Fragen hier.
-
The Following 3 Users Say Thank You to Mr. White For This Useful Post:
-
19.04.2013, 15:46 #3
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.937 Times in 1.180 PostsIch habe ein Applet und eine externe Klasse(EasyCarHouse).
Mein Ziel: Innerhalb der EasyCarHouse Klasse auf das übergebene Applet zeichnen.
Folgenden Link habe ich dafür benutzt: Grafikdateien laden und anzeigen
Da steht allerdings nur, wie es im Applet selbst geht, es wird jedoch nicht beschrieben wie man das mit einer externen Klasse macht.
So hatte ich es mir pseudo vorgestellt:
Code:public class test extends JApplet { EasyCarHouse EC = new EasyCarHouse(this); EC.drawsomecars(); //Jetzt sollten auf dem Applet(in diesem Fall test) welches ich übergeben habe, die Autos gezeichnet sein //Ich möchte nirgendswo das PaintEvent vom Applet test außerhalb meiner EasyCarHouse klasse nutzen müssen. }
Das Problem liegt darin: Ich weiss nicht wie ich innerhalb der EasyCarHouse Klasse auf das Applet zeichnen kann.
Im Applet CarHouse selbst möchte ich das PaintEvent nicht benutzen. Das Zeichnen auf das Applet soll alles in der instanzierten Klasse EasyCarHouse geschehen
Der Code den ich aktuell habe, enthält viele Versuche(returnen einer Graphic wo drauf gezeichnet wurde etc etc),
deshalb wollte ich den nicht posten und hab auch nach TeamViewerhilfe gefragt.
Kann mir da jemand helfen?
-
19.04.2013, 16:16 #4
- Registriert seit
- 21.01.2013
- Beiträge
- 130
Thanked 241 Times in 47 PostsAW: Java - Suche kurz mal Hilfe
Graphics vom Applet an die Klasse übergeben.
-
19.04.2013, 17:08 #5
- Registriert seit
- 19.11.2011
- Beiträge
- 496
Thanked 412 Times in 268 PostsAW: Java - Suche kurz mal Hilfe
Wenn es bei einer Klasse, die etwas zu zeichnen hat, bleibt, kannst du ganz einfach ein Graphics-Objekt übergeben, wie AlbionHack schon sagte.
Ich habe mir da etwas Allgemeines gebastelt, das ich immer wieder verwenden kann. Es wird auf einem JPanel gezeichnet; der Austausch von Applet und Anwendung ist also problemlos möglich.
interface Paintable {
void paint(Graphics g);
//void update(long elapsed);
}
public class GraphicsPanel extends JPanel {
private final List<Paintable> paintables;
public GraphicsPanel() {
super(true);
paintables = new ArrayList<>();
}
public void addPaintable(Paintable p) {
paintables.add(p);
repaint();
}
public void removePaintable(Paintable p) {
paintables.remove(p);
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for(Paintable p : paintables) {
//final long start = System.currentTimeMillis();
p.paint(g);
//p.update(System.currentTimeMillis() - start);
}
}
}
Jede Klasse, die zeichnen können soll, lässt du Paintable implementieren.
class EasyCarHouse implements Paintable {
...
@Override
public void paint(Graphics g) {
...
}
/*@Override
public void update(long elapsed) {
...
}*/
...
}
-
19.04.2013, 19:08 #6
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.937 Times in 1.180 PostsAW: [Java] Aus Klasse heraus auf Applet zeichnen
Es wird auf einem JPanel gezeichnet; der Austausch von Applet und Anwendung ist also problemlos möglich.
Wie machst Du das denn? Übergibst Du das getGraphics() vom Applet oder wie?
Hab auch einige Probleme mit dem Code:
Diese GraphicsPanelklasse ging bei mir nicht public , hab das public also weggemacht.
Desweiteren sagt mir die IDE (Blue J v.3.09.) , dass da ein Fehler in folgender Zeile wäre:
Code:private final List<Paintable> paintables;
-
19.04.2013, 19:16 #7
- Registriert seit
- 15.11.2011
- Beiträge
- 8.014
- Blog Entries
- 5
Thanked 9.385 Times in 3.223 PostsAW: [Java] Aus Klasse heraus auf Applet zeichnen
Steht doch da: Es gibt ne Klasse namens List im Namespace java.util und java.awt. Du hast entweder versehentlich beides oder gleich beide Namespace komplett importiert, also
import java.util.*;
import java.awt.*;
Daher ist nicht eindeutig klar, auf welche der beiden Klassen du da zugreifen willst.
Da du in deinem Snippet einen dynamischen Array erzeugst wohl eher java.util.List, also schreibst du entweder den Namespace mit davor oder entfernst das Wildcard-Pattern von java.awt und importierst nur das was du aus dem Namespace auch wirklich brauchst.
-
The Following User Says Thank You to DMW007 For This Useful Post:
-
19.04.2013, 19:18 #8
- Registriert seit
- 19.11.2011
- Beiträge
- 496
Thanked 412 Times in 268 PostsAW: [Java] Aus Klasse heraus auf Applet zeichnen
Zitat von NightMareG
Zitat von NightMareG
import java.awt.*;
import java.util.*;
richtig? Importiere die jeweiligen Klassen und nicht das komplette Paket. Oder schreibe java.util.List<Paintables> anstatt List<Paintables>.
-
The Following User Says Thank You to Mr. White For This Useful Post:
-
19.04.2013, 20:47 #9
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.937 Times in 1.180 PostsAW: [Java] Aus Klasse heraus auf Applet zeichnen
Danke...
Jetzt sagt mir die IDE wieder einen Fehler.. Ich werd noch verrückt mit Java.
Fehler:
EasyCarHouse is not abstract and does not override abstract method paint(java.awt.Graphics) in Paintable.
Zeile:Code:class EasyCarHouse implements Paintable
-
19.04.2013, 20:53 #10
- Registriert seit
- 19.11.2011
- Beiträge
- 496
Thanked 412 Times in 268 PostsAW: [Java] Aus Klasse heraus auf Applet zeichnen
Paintable schreibt vor, dass es eine Methode paint(Graphics g) geben muss. Nur mit einem "implements Paintable" ist es nicht getan. ^^
Hier mal ein kompilierbares Beispiel:
import javax.swing.JApplet;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import java.util.List;
import java.util.ArrayList;
import java.awt.Graphics;
public final class GraphicsPanelDemo extends JApplet {
public void init() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final GraphicsPanel gp = new GraphicsPanel();
gp.addPaintable(new PaintableDemo());
add(gp);
}
});
}
}
final class PaintableDemo implements Paintable {
@Override
public void paint(Graphics g) {
g.fillRect(10, 10, 20, 20);
}
}
interface Paintable {
void paint(Graphics g);
//void update(long elapsed);
}
final class GraphicsPanel extends JPanel {
private final List<Paintable> paintables;
public GraphicsPanel() {
super(true);
paintables = new ArrayList<>();
}
public void addPaintable(Paintable p) {
paintables.add(p);
repaint();
}
public void removePaintable(Paintable p) {
paintables.remove(p);
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for(Paintable p : paintables) {
//final long start = System.currentTimeMillis();
p.paint(g);
//p.update(System.currentTimeMillis() - start);
}
}
}
Geändert von Mr. White (19.04.2013 um 20:57 Uhr)
-
The Following User Says Thank You to Mr. White For This Useful Post:
Ähnliche Themen
-
[Paper #2] Zugriff auf den Knuddelsclient aus Java heraus
Von DMW007 im Forum TutorialsAntworten: 2Letzter Beitrag: 25.10.2016, 18:59 -
Java Applet ist leer
Von FaNNboii im Forum JavaAntworten: 3Letzter Beitrag: 07.02.2014, 16:45 -
[Java] Kleine Klasse für Polynome
Von Mr. White im Forum JavaAntworten: 0Letzter Beitrag: 26.06.2013, 15:13 -
[Java]Aus einer Klasse, zwei machen
Von aquastar im Forum JavaAntworten: 1Letzter Beitrag: 11.05.2012, 09:39 -
Java Applet & Cookies
Von uncopyable im Forum JavaAntworten: 1Letzter Beitrag: 04.12.2011, 18:25
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.