Seite 1 von 2 12 Letzte
  1. #1

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.937 Times in 1.180 Posts

    Standard [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

  2. #2

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: Java - Suche kurz mal Hilfe

    Stell' deine Fragen hier.

  3. The Following 3 Users Say Thank You to Mr. White For This Useful Post:

    Bubble Gum (18.04.2013), DMW007 (18.04.2013), ThunderStorm (19.04.2013)

  4. #3

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.937 Times in 1.180 Posts

    Standard

    Ich 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?

  5. #4

    Registriert seit
    21.01.2013
    Beiträge
    130
    Thanked 241 Times in 47 Posts

    Standard AW: Java - Suche kurz mal Hilfe

    Graphics vom Applet an die Klasse übergeben.

  6. #5

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: 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) {
    ...
    }*/
    ...
    }

  7. #6

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.937 Times in 1.180 Posts

    Standard AW: [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;
    Fehler: reference to List is ambiguous, both interface java.util.List in java.util and java.awt.List in java.awt match.

  8. #7
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    8.005
    Thanked 9.385 Times in 3.223 Posts
    Blog Entries
    5

    Standard AW: [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.


  9. The Following User Says Thank You to DMW007 For This Useful Post:


  10. #8

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: [Java] Aus Klasse heraus auf Applet zeichnen

    Zitat Zitat von NightMareG
    Wie machst Du das denn? Übergibst Du das getGraphics() vom Applet oder wie?
    Nein. GraphicsPanel erbt von JPanel. Es kann wie ein ganz normales JPanel behandelt werden. Du musst dem Applet nur eine Instanz der GraphicsPanel-Klasse hinzufügen. (z.B: add(graphicsPanel))


    Zitat Zitat von NightMareG
    Fehler: reference to List is ambiguous, both interface java.util.List in java.util and java.awt.List in java.awt match.
    Dann hast du bestimmt sowas stehen:

    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>.

  11. The Following User Says Thank You to Mr. White For This Useful Post:


  12. #9

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.937 Times in 1.180 Posts

    Standard AW: [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

  13. #10

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: [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)

  14. The Following User Says Thank You to Mr. White For This Useful Post:


Seite 1 von 2 12 Letzte

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 25.10.2016, 18:59
  2. Java Applet ist leer
    Von FaNNboii im Forum Java
    Antworten: 3
    Letzter Beitrag: 07.02.2014, 16:45
  3. [Java] Kleine Klasse für Polynome
    Von Mr. White im Forum Java
    Antworten: 0
    Letzter Beitrag: 26.06.2013, 15:13
  4. [Java]Aus einer Klasse, zwei machen
    Von aquastar im Forum Java
    Antworten: 1
    Letzter Beitrag: 11.05.2012, 09:39
  5. Java Applet & Cookies
    Von uncopyable im Forum Java
    Antworten: 1
    Letzter Beitrag: 04.12.2011, 18:25
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.