Wer kann bei meinem Code helfen?



  • Hallo Leute!

    Ich mach jetzt scho 2 Mon JAVA und will ein Applet schreiben, dass ein Dreieck ausgibt, das man durch Mausziehen verändern kann, dessen Winkelhalbierenden, Inkreismittelpunkt u. Inkreis. Ich hab schon eine Klasse die aus einem Winkel + einem Punkt eine lineare Funktion macht. ABER irgendwie wird nichts gezeichnet!!!!! kann mir jemand helfen 🙄 mailto:bertram_arnold@cantor.dyndns.tv da könnt ihr mir sonst auch hinschreiben



  • Poste mal den Code!
    Das könnte 1000 verschiedene Gründe haben.



  • // Interpreter.java:
    
    // import java.hellsehen.*;
    


  • Jaja, wenn ihr euch dass alle nicht vorstellen könnt... 😉
    Das hier ist DreiecksBeispiel.java...

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.util.*;
    import java.awt.geom.*;
    
    public class DreiecksBeispiel extends JApplet implements KeyListener {
        TriPane tri;
        Color col1,col2;
        public void init() {
            tri = new TriPane(getSize().width,getSize().height,this);
            getContentPane().add(tri);
            try {
                col1 = getParameter("Farbe1") == null ? new Color(255,0,0) : Color.decode(getParameter("Farbe1"));
            } catch (NumberFormatException nfe) {
                col1 = new Color(255,0,0);
            } try {
                col2 = getParameter("Farbe2") == null ? new Color(0,255,0) : Color.decode(getParameter("Farbe2"));
            } catch(NumberFormatException n) {
                col2 = new Color(0,255,0);
            }
            tri.updatePaint(getSize().width,getSize().height,col1,col2);
            showStatus("F1 für Hilfe");
        }
    
        public void keyPressed (KeyEvent evt) {
            showStatus(evt.getKeyChar() + "gedrückt");
        }
    
        public void keyReleased(KeyEvent evt) {
            showStatus("F1 für Hilfe");
        }
    
        public void keyTyped   (KeyEvent evt) {}
    }
    
    class TriPane extends JPanel implements MouseListener, MouseMotionListener{
        int fillToX,fillToY;
        private GradientPaint filling;
        private boolean[] dragging;
        private int[] edgesY={53,53,3};
        private int[] edgesX={3,103,53};
        private int[] lastEdgesX,lastEdgesY;
        Color eckenFarbe, linienFarbe, wiHaFarbe;
        JApplet parent;
        Funktion winkelCBA,winkelACB,winkelBAC,geradeAB,geradeAC,geradeBC;
        public void paintComponent(Graphics gr) {
            Graphics2D g = (Graphics2D)gr;
            g.setPaint(filling);
            g.fill(new Rectangle2D.Float(0F,0F,(float)fillToX,(float)fillToY)); 
            g.setPaint(linienFarbe);
            GeneralPath triangle = new GeneralPath();
            triangle.moveTo((float)edgesX[0],(float)edgesY[0]);
            triangle.lineTo((float)edgesX[1],(float)edgesY[1]);
            triangle.lineTo((float)edgesX[2],(float)edgesY[2]);
            triangle.closePath();
            g.draw(triangle);
            g.setPaint(eckenFarbe);
            for(int i=0;i<edgesX.length;i++)
                g.fill(new Ellipse2D.Float((float)edgesX[i]-2F,(float)edgesY[i]-2F,4F,4F));
            g.setPaint(wiHaFarbe);
            //g.draw(new Line2D.Float((float) winkelACB.getX(0),0F,(float) winkelACB.getX(getSize().width), getSize().height));
        }
    
        public void updatePaint(int x,int y, Color col1, Color col2) {
            fillToX=x;
            fillToY=y;
            filling = new GradientPaint(0,0,col1,fillToX,fillToY,col2,false);
            repaint();
        }
    
        TriPane(int x,int y,JApplet parParent) {
            super();
            fillToX=x;
            fillToY=y;
            filling = new GradientPaint(0,0,new Color(0,0,0),fillToX,fillToY,new Color(255,255,255),false);
            dragging = new boolean[3];
            lastEdgesX=new int[3];
            lastEdgesY = new int[3];
            for(int i=0;i<edgesX.length;i++) {
                lastEdgesX[i] = edgesX[i];
                lastEdgesY[i] = edgesY[i];
            }
            addMouseListener(this);
            addMouseMotionListener(this);
            try {
                linienFarbe = parParent.getParameter("LinienFarbe") == null ? new Color(0,0,255) : Color.decode(parParent.getParameter("LinienFarbe"));
            } catch (NumberFormatException n) {
                linienFarbe = new Color(0,0,255);
            }
            try {
                eckenFarbe = parParent.getParameter("EckenFarbe") == null ? new Color(255,255,0) : Color.decode(parParent.getParameter("EckenFarbe"));
            } catch (NumberFormatException n) {
                eckenFarbe = new Color(255,255,0);
            }
            try {
                wiHaFarbe = parParent.getParameter("WinkelhalbierendenFarbe") == null ? new Color(255,90,90) : Color.decode(parParent.getParameter("WinkelhalbierendenFarbe"));
            } catch (NumberFormatException n) {
                wiHaFarbe = new Color(255,90,90);
            }
            parent = parParent;
        }
        public void mouseClicked (MouseEvent evt) {}
        public void mouseEntered (MouseEvent evt) {}
        public void mouseExited  (MouseEvent evt) {}
        public void mousePressed (MouseEvent evt) {
            for(int i=0;i<edgesX.length;i++) {
                if(evt.getX()-2<=edgesX[i] && evt.getX()+2>=edgesX[i] && evt.getY()-2<=edgesY[i] && evt.getY()+2>=evt.getY())
                    dragging[i] = true;
            }
        }
        public void mouseReleased(MouseEvent evt) {
            for (int i=0;i<edgesX.length;i++)
                dragging[i] = false;
            parent.showStatus("F1 für Hilfe");
        }
        public void mouseMoved   (MouseEvent evt) {
            mouseDragged(evt);
        }
        public void mouseDragged (MouseEvent evt) {
            int justDragging=-1;
            loop: for(int i=0;i<dragging.length;i++){
                if (dragging[i]) {
                    justDragging=i;
                    break loop;
                }
            }
            if(justDragging != -1) {
                edgesX[justDragging]=evt.getX();
                edgesY[justDragging]=evt.getY();
                parent.showStatus("Zieht Punkt "+(justDragging+1)+" auf ("+evt.getX()+","+evt.getY()+")");
                geradeAB=Funktion.aufloesen(edgesX[0],edgesY[0],edgesX[1],edgesY[1]);
                geradeAC=Funktion.aufloesen(edgesX[0],edgesY[0],edgesX[2],edgesY[2]);
                geradeBC=Funktion.aufloesen(edgesX[1],edgesY[1],edgesX[2],edgesY[2]);
                winkelACB=Funktion.aufloesen((Math.atan(geradeAB.getM())+Math.atan(geradeAC.getM()))/2,edgesX[0],edgesY[0]);
                winkelBAC=Funktion.aufloesen((Math.atan(geradeAB.getM())+Math.atan(geradeBC.getM()))/2,edgesX[1],edgesY[1]);
                winkelBAC=Funktion.aufloesen((Math.atan(geradeAC.getM())+Math.atan(geradeBC.getM()))/2,edgesX[2],edgesY[2]);
                repaint();
            }
        }
    }
    

    und dass hier Funktion.java:

    public class Funktion {
        private double m,n;
    
        public Funktion(double mm,double nn) {
            super();
            m=mm;
            n=nn;
        }
    
        public double getM() {
            return m;
        }
    
        public double getN() {
            return n;
        }
    
        public static Funktion aufloesen(int x1,int y1,int x2, int y2) {
            int deltaX=x1-x2;
            int deltaY=y1-y2;
            double m = y1 == y2 ? Math.pow(10,2000) : deltaX / deltaY;
            double n = y1 - x1 * m;
            return new Funktion(m,n);
        }
    
        public static Funktion aufloesen(double angle, int x, int y) {
            double m = Math.toDegrees(angle)==90 ? Math.pow(10,2000) : Math.tan(angle);
            double n = y - x * m;
            return new Funktion(m,n);
        }
    
        public int getX(int y) {
            int toReturn = (int) Math.round((y-n) / m);
            return toReturn;
        }
    
        public int getY(int x) {
            int toReturn = (int) Math.round(m*x+n);
            return toReturn;
        }
    }
    

    So, hilft euch dass irgendwie weiter 🙄



  • Hast du Tomaten auf den Augen?
    Der Code funktioniert einwandfrei.
    Ich hab's mit JCreator, dem jdk 1.4.2 und auf Win2K kompiliert.

    Man sieht ein blaues Dreieck mit gelben Eckpunkten dass sich verändern lässt.
    Das wolltest du doch, oder?



  • (Hab mich jetzt angemeldet...)

    Ja, unter anderem...

    Aber eigentlich sollten auch Winkelhalbierende gezeichnet werden..... Na Ja..... bei mir hats jednfalls NICHT sofunktioniert wie ich's gewollt hab!!


Anmelden zum Antworten