Brauche Hilfe beim Programmieren eines Funktionsplotters

Status
Nicht offen für weitere Antworten.
K

Kostik

Gast
Hallo ihr JAVA-Experten!

Hab ca. vor einem Jahr angefangen mit Java zu programmieren und auch einen kurzen Anfängerkurs gemacht.
Als Zeitvertreib möchte ich einen Funktionsplotter programmieren. Das glaubt auch ganz gut, glaub ich zumindest. Aber ich hab da ein Problem. Ich will gerne, dass wenn man mit der Maus über den gezeichneten Graph geht, dass dann in einem Label der Wert der X- bzw. Y-Koordinate angezeigt wird. Hab versucht das mit dem MouseMotionListener zu machen. Aber ich hab ihn noch nie benutzt und weiss nicht ganz wie das geht. Würde aber diesen Punkt in mein kleines Programm implementieren. Helft mir bitte.

Hier mein bisheriges Programm

Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.event.MouseMotionListener;
import java.applet.Applet;
import java.lang.*;
import java.text.*;


/**
  * Das Programm zeichnet Polynomfunktionen bis zum Grade 5
  * Version vom 1.05.2006
  */

public class Funktionsplotter_K extends Applet {
  // Anfang Eigenschaften/Zustände/Variablen
  private Label Ueberschrift = new Label();
  private Label KoeffizientX5_Label = new Label();
  private Label KoeffizientX4_Label = new Label();
  private Label KoeffizientX3_Label = new Label();
  private Label KoeffizientX2_Label = new Label();
  private Label KoeffizientX1_Label = new Label();
  private TextField KoeffizientX5_Eingabe = new TextField();
  private TextField KoeffizientX4_Eingabe = new TextField();
  private TextField KoeffizientX3_Eingabe = new TextField();
  private TextField KoeffizientX2_Eingabe = new TextField();
  private TextField KoeffizientX1_Eingabe = new TextField();
  private TextField KoeffizientX0_Eingabe = new TextField();
  private Label funktionsName = new Label();
  private Button ButtonStarten = new Button();
  private Button ButtonMouse = new Button();
  private Button ButtonLoeschen = new Button();
  private Button ButtonAbl = new Button();
  private Button ButtonAbl2 = new Button();
  private Label minX_Label = new Label();
  private Label maxX_Label = new Label();
  private Label minY_Label = new Label();
  private Label maxY_Label = new Label();
  private Label xSchrittweite_Label = new Label();
  private TextField xMinEingabe = new TextField();
  private double xMinWert = -5.;
  private TextField xMaxEingabe = new TextField();
  private double xMaxWert = 5.;
  private TextField yMinEingabe = new TextField();
  private double yMinWert = -10.;
  private TextField yMaxEingabe = new TextField();
  private double yMaxWert = 10.;
  private TextField xSchrittEingabe = new TextField();
  private Label Wertetabelle_Label = new Label();
  private TextArea Wertetabelle_Textarea = new TextArea("",1,1,1);
  private Label Funktion_Label = new Label();
  private Label Abl1_Funktion_Label = new Label();
  private Label Mouse_Koordinaten = new Label();




  // Ende Variablen

  public void init() {
    this.setSize(1000,660);
    this.setBackground(Color.lightGray);
    this.setLayout(null);
    
    this.addMouseMotionListener(new MouseMotionAdapter() {
      public void mouseMoved( MouseEvent e ) {
          int  X = getLocation().x + e.getPoint().x;
          int  Y = getLocation().y + e.getPoint().y;

        Mouse_Koordinaten.setText(X + " : " + Y);
      }
    });


    
    // Anfang Komponenten
    Mouse_Koordinaten.setBounds(35,145,50,10);
    Mouse_Koordinaten.setFont (new Font("Lucida Console",0,10));
    Mouse_Koordinaten.setForeground(Color.black);
    Mouse_Koordinaten.setBackground(Color.white);
    this.add(Mouse_Koordinaten);

    Ueberschrift.setBounds(30,20,970,30);
    Ueberschrift.setText("Polynomfunktionsplotter                                                by K 2the K");
    Ueberschrift.setFont (new Font("Lucida Console",1,26));
    Ueberschrift.setForeground(Color.BLACK);
    this.add(Ueberschrift);
    
    funktionsName.setBounds(30,70,45,20);
    funktionsName.setText("f(x) = ");
    funktionsName.setFont(new Font("Lucida Console",1, 15));
    this.add(funktionsName);
    
    KoeffizientX5_Eingabe.setBounds(75,70,35,20);
    KoeffizientX5_Eingabe.setText("0.");
    this.add(KoeffizientX5_Eingabe);
    
    KoeffizientX5_Label.setBounds(115,70,60,20);
    KoeffizientX5_Label.setFont(new Font("Lucida Console",1, 15));
    KoeffizientX5_Label.setText("* x^5  + ");
    this.add(KoeffizientX5_Label);

    KoeffizientX4_Eingabe.setBounds(175,70,35,20);
    KoeffizientX4_Eingabe.setText("0.");
    this.add(KoeffizientX4_Eingabe);
    
    KoeffizientX4_Label.setBounds(215,70,60,20);
    KoeffizientX4_Label.setFont(new Font("Lucida Console",1, 15));
    KoeffizientX4_Label.setText("* x^4  + ");
    this.add(KoeffizientX4_Label);

    KoeffizientX3_Eingabe.setBounds(275,70,35,20);
    KoeffizientX3_Eingabe.setText("0.");
    this.add(KoeffizientX3_Eingabe);
    
    KoeffizientX3_Label.setBounds(315,70,60,20);
    KoeffizientX3_Label.setFont(new Font("Lucida Console",1, 15));
    KoeffizientX3_Label.setText("* x^3  + ");
    this.add(KoeffizientX3_Label);

    KoeffizientX2_Eingabe.setBounds(375,70,35,20);
    KoeffizientX2_Eingabe.setText("0.");
    this.add(KoeffizientX2_Eingabe);
    
    KoeffizientX2_Label.setBounds(415,70,60,20);
    KoeffizientX2_Label.setFont(new Font("Lucida Console",1, 15));
    KoeffizientX2_Label.setText("* x^2  + ");
    this.add(KoeffizientX2_Label);

    KoeffizientX1_Eingabe.setBounds(475,70,35,20);
    KoeffizientX1_Eingabe.setText("0.");
    this.add(KoeffizientX1_Eingabe);
    
    KoeffizientX1_Label.setBounds(515,70,40,20);
    KoeffizientX1_Label.setFont(new Font("Lucida Console",1, 15));
    KoeffizientX1_Label.setText("* x  + ");
    this.add(KoeffizientX1_Label);

    KoeffizientX0_Eingabe.setBounds(560,70,35,20);
    KoeffizientX0_Eingabe.setText("0.");
    this.add(KoeffizientX0_Eingabe);
    

    
    ButtonStarten.setBounds(680,70,70,23);
    ButtonStarten.setFont (new Font("Lucida Console",1, 13));
    ButtonStarten.setLabel("Zeichnen");
    this.add(ButtonStarten);
    ButtonStarten.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
       ButtonStarten_Action(evt);
      }
    });
    

    ButtonLoeschen.setBounds(750,70,70,23);
    ButtonLoeschen.setFont (new Font("Lucida Console",1, 13));
    ButtonLoeschen.setLabel("Löschen");
    this.add(ButtonLoeschen);
    ButtonLoeschen.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        ButtonLoeschen_Action(evt);
      }
    });
    
    ButtonAbl.setBounds(820,70,70,23);
    ButtonAbl.setFont (new Font("Lucida Console",1, 13));
    ButtonAbl.setLabel("1. ABL");
    this.add(ButtonAbl);
    ButtonAbl.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        ButtonAbl1Zeichnen_Action(evt);
      }
    });
    
    ButtonAbl2.setBounds(890,70,70,23);
    ButtonAbl2.setFont (new Font("Lucida Console",1, 13));
    ButtonAbl2.setLabel("2. ABL");
    this.add(ButtonAbl2);
    ButtonAbl2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        ButtonAbl2Zeichnen_Action(evt);
      }
    });
    

    minX_Label.setBounds(30, 523, 49, 16);
    minX_Label.setText("xMin  =");
    minX_Label.setFont (new Font("Lucida Console",1, 13));
    this.add(minX_Label);
    xMinEingabe.setBounds(84, 520, 49, 24);
    xMinEingabe.setText(Double.toString(xMinWert));
    this.add(xMinEingabe);
    
    maxX_Label.setBounds(160, 523, 53, 16);
    maxX_Label.setText("xMax  =");
    maxX_Label.setFont (new Font("Lucida Console",1, 13));
    this.add(maxX_Label);
    xMaxEingabe.setBounds(218, 520, 49, 24);
    xMaxEingabe.setText(Double.toString(xMaxWert));
    this.add(xMaxEingabe);
    

    minY_Label.setBounds(30, 563, 49, 16);
    minY_Label.setText("yMin  =");
    minY_Label.setFont (new Font("Lucida Console",1, 13));
    this.add(minY_Label);
    yMinEingabe.setBounds(84, 560, 49, 24);
    yMinEingabe.setText(Double.toString(yMinWert));
    this.add(yMinEingabe);
    
    maxY_Label.setBounds(160, 563, 53, 16);
    maxY_Label.setText("yMax  =");
    maxY_Label.setFont (new Font("Lucida Console",1, 13));
    this.add(maxY_Label);
    yMaxEingabe.setBounds(218, 560, 49, 24);
    yMaxEingabe.setText(Double.toString (yMaxWert));
    this.add(yMaxEingabe);
    
    
    xSchrittweite_Label.setBounds(320, 542, 105, 16);
    xSchrittweite_Label.setText("x-Schrittweite  =");
    xSchrittweite_Label.setFont (new Font("Lucida Console",1, 13));
    this.add(xSchrittweite_Label);
    xSchrittEingabe.setBounds(435, 538, 50, 24);
    xSchrittEingabe.setText("0.1");
    this.add(xSchrittEingabe);


    Wertetabelle_Label.setBounds(700, 160, 150, 16);
    Wertetabelle_Label.setText("Wertetabelle");
    Wertetabelle_Label.setFont (new Font("Lucida Console",1, 18));
    this.add(Wertetabelle_Label);
    Wertetabelle_Textarea.setBounds(560, 200, 400, 300);
    Wertetabelle_Textarea.setText("           Wertetabelle noch nicht möglich, erst Funktion eingeben!");
    this.add(Wertetabelle_Textarea);
    
    Funktion_Label.setBounds(30,90,480,20);
    Funktion_Label.setFont(new Font("Lucida Console",1, 15));
    Funktion_Label.setForeground(Color.BLUE);
    this.add(Funktion_Label);
    Funktion_Label.setVisible(false);

    Abl1_Funktion_Label.setBounds(30,110,480,20);
    Abl1_Funktion_Label.setFont(new Font("Lucida Console",1, 15));
    Abl1_Funktion_Label.setForeground(Color.RED);
    this.add(Abl1_Funktion_Label);
    Abl1_Funktion_Label.setVisible(false);
    

    repaint();
    // Ende Komponenten
  }
  
   public void paint (Graphics g){
    Graphics Zeichenbereich = this.getGraphics();
    Zeichenbereich.setColor(Color.white);
    Zeichenbereich.fillRect(30,140,480,360);
    koordinatenAchsenZeichnen(Zeichenbereich);
    koordinatenAchsenSkalieren(Zeichenbereich);

   }
  
   public void koordinatenAchsenZeichnen (Graphics g) {
     g.setColor(Color.black);
     g.drawLine (270, 144, 270, 495);
     g.drawLine (267, 145, 270, 142);
     g.drawLine (270, 142, 273, 145);
     g.drawString ("Y",255, 155);

     g.drawLine (35, 320, 505, 320);
     g.drawLine (504, 317, 507, 320);
     g.drawLine (504, 323, 507, 320);
     g.drawString ("X",495, 335);

  }

  public void koordinatenAchsenSkalieren (Graphics g) {
     int xEins = xSkalierung (1., xMinWert,xMaxWert);
     int yEins = ySkalierung (1., yMinWert, yMaxWert);
     g.drawLine (xEins, 318, xEins, 322);
     g.drawString ("1", xEins - 3, 338);
     g.drawLine (273, yEins, 277, yEins);
     g.drawString ("1", 260, yEins + 5);
  }

  public int xSkalierung(double x, double minX, double maxX){
    double xPixel = 470.*(x - minX)/(maxX - minX) + 35.;
    return (int) xPixel;
  }

  public int ySkalierung(double y, double minY, double maxY){
    double yPixel = 351.*(y - maxY)/(minY - maxY) + 144.;
    return (int) yPixel;

  }

  public void PunktMalen(Graphics g, int intXWert, int intYWert, Color zeichenFarbe) {
    g.setColor (zeichenFarbe);
    g.fillOval(intXWert, intYWert, 2, 2);
  }

  public double funktionsWert(double x, double a5, double a4, double a3, double a2, double a1, double a0) {
    return a5*x*x*x*x*x + a4*x*x*x*x + a3*x*x*x + a2*x*x + a1*x + a0;
  }
  
  public double Ableitung1_funktionsWert(double x, double a5, double a4, double a3, double a2, double a1) {
    return 5*a5*x*x*x*x + 4*a4*x*x*x + 3*a3*x*x + 2*a2*x + a1*x;
  }
  
  public double Ableitung2_funktionsWert(double x, double a5, double a4, double a3, double a2) {
    return 4*5*a5*x*x*x + 3*4*a4*x*x + 2*3*a3*x + 2*a2;
  }
  
  public void ButtonLoeschen_Action(ActionEvent evt) {
     Funktion_Label.setVisible(false);
     Abl1_Funktion_Label.setVisible(false);
     KoeffizientX5_Eingabe.setText("0.");
     KoeffizientX4_Eingabe.setText("0.");
     KoeffizientX3_Eingabe.setText("0.");
     KoeffizientX2_Eingabe.setText("0.");
     KoeffizientX1_Eingabe.setText("0.");
     KoeffizientX0_Eingabe.setText("0.");
     Wertetabelle_Textarea.setText("           Wertetabelle noch nicht möglich, erst Funktion eingeben!");
     xMaxEingabe.setText(Double.toString (xMaxWert));
     xMinEingabe.setText(Double.toString(xMinWert));
     xSchrittEingabe.setText("0.1");
     yMinEingabe.setText(Double.toString (yMinWert));
     yMaxEingabe.setText(Double.toString (yMaxWert));
     repaint();
  }
  
  public void ButtonStarten_Action(ActionEvent evt) {

    double koeffizient5 = Double.parseDouble(KoeffizientX5_Eingabe.getText());
    double koeffizient4 = Double.parseDouble(KoeffizientX4_Eingabe.getText());
    double koeffizient3 = Double.parseDouble(KoeffizientX3_Eingabe.getText());
    double koeffizient2 = Double.parseDouble(KoeffizientX2_Eingabe.getText());
    double koeffizient1 = Double.parseDouble(KoeffizientX1_Eingabe.getText());
    double koeffizient0 = Double.parseDouble(KoeffizientX0_Eingabe.getText());
    
    Funktion_Label.setText("F(x) = " + koeffizient5 + "x^5 + " + koeffizient4 + "x^4 + " + koeffizient3 + "x^3 + " + koeffizient2 + "x^2 + " + koeffizient1 + "x + " + koeffizient0);
    Funktion_Label.setVisible(true);
    Wertetabelle_Textarea.setText("");

    Graphics Zeichenbereich = this.getGraphics();
    xMinWert = Double.parseDouble(xMinEingabe.getText());
    xMaxWert = Double.parseDouble(xMaxEingabe.getText());
    double deltaX = Double.parseDouble(xSchrittEingabe.getText());
    double xWert = xMinWert;

    yMinWert = Double.parseDouble(yMinEingabe.getText());
    yMaxWert = Double.parseDouble(yMaxEingabe.getText());
    double yWert = 0.;
    double Abl1_yWert = 0.;

    int xPos = 0;
    int yPos = 0;

    while (xWert <= xMaxWert) {
      Color graphFarbe = Color.blue;
      yWert = funktionsWert (xWert, koeffizient5, koeffizient4, koeffizient3, koeffizient2, koeffizient1, koeffizient0);
      Abl1_yWert = Ableitung1_funktionsWert (xWert, koeffizient5, koeffizient4, koeffizient3, koeffizient2, koeffizient1);
      xPos = xSkalierung(xWert, xMinWert, xMaxWert);
      yPos = ySkalierung(yWert, yMinWert, yMaxWert);
      NumberFormat Gerundet = NumberFormat.getInstance();
      Gerundet.setMaximumFractionDigits(2);


      if (yPos>145 && yPos<495) {
      PunktMalen(Zeichenbereich, xPos, yPos, graphFarbe);
      }

      if (yWert<0.15 && yWert>-0.15) {
       Wertetabelle_Textarea.append("\n  " + Gerundet.format(xWert) + "       " + Gerundet.format(yWert) + "        " + Gerundet.format(Abl1_yWert) + "              Nullstellenbereich");
       xWert = xWert + deltaX;

      } else {

       Wertetabelle_Textarea.append("\n  " + Gerundet.format(xWert) + "       " + Gerundet.format(yWert) + "        " + Gerundet.format(Abl1_yWert));
       xWert = xWert + deltaX;
      }

    }

  }
  public void ButtonAbl1Zeichnen_Action(ActionEvent evt) {

    double koeffizient5 = Double.parseDouble(KoeffizientX5_Eingabe.getText());
    double koeffizient4 = Double.parseDouble(KoeffizientX4_Eingabe.getText());
    double koeffizient3 = Double.parseDouble(KoeffizientX3_Eingabe.getText());
    double koeffizient2 = Double.parseDouble(KoeffizientX2_Eingabe.getText());
    double koeffizient1 = Double.parseDouble(KoeffizientX1_Eingabe.getText());
    NumberFormat Gerundet = NumberFormat.getInstance();
    Gerundet.setMaximumFractionDigits(2);

    Abl1_Funktion_Label.setText("F'(x) = " + Gerundet.format(5*koeffizient5) + "x^4 + " + Gerundet.format(4*koeffizient4) + "x^3 + " + Gerundet.format(3*koeffizient3) + "x^2 + " + Gerundet.format(2*koeffizient2) + "x + " + Gerundet.format(koeffizient1));
    Abl1_Funktion_Label.setVisible(true);

    Graphics Zeichenbereich = this.getGraphics();
    xMinWert = Double.parseDouble(xMinEingabe.getText());
    xMaxWert = Double.parseDouble(xMaxEingabe.getText());
    double deltaX = Double.parseDouble(xSchrittEingabe.getText());
    double xWert = xMinWert;

    yMinWert = Double.parseDouble(yMinEingabe.getText());
    yMaxWert = Double.parseDouble(yMaxEingabe.getText());
    double yWert = 0.;

    int xPos = 0;
    int yPos = 0;

    while (xWert <= xMaxWert) {
      Color graphFarbe = Color.red;
      yWert = Ableitung1_funktionsWert (xWert, koeffizient5, koeffizient4, koeffizient3, koeffizient2, koeffizient1);
      xPos = xSkalierung(xWert, xMinWert, xMaxWert);
      yPos = ySkalierung(yWert, yMinWert, yMaxWert);

      if (yPos>145 && yPos<495) {
      PunktMalen(Zeichenbereich, xPos, yPos, graphFarbe);
      }
      xWert = xWert + deltaX;

    }

  }

  public void ButtonAbl2Zeichnen_Action(ActionEvent evt) {

    double koeffizient5 = Double.parseDouble(KoeffizientX5_Eingabe.getText());
    double koeffizient4 = Double.parseDouble(KoeffizientX4_Eingabe.getText());
    double koeffizient3 = Double.parseDouble(KoeffizientX3_Eingabe.getText());
    double koeffizient2 = Double.parseDouble(KoeffizientX2_Eingabe.getText());

    Graphics Zeichenbereich = this.getGraphics();
    xMinWert = Double.parseDouble(xMinEingabe.getText());
    xMaxWert = Double.parseDouble(xMaxEingabe.getText());
    double deltaX = Double.parseDouble(xSchrittEingabe.getText());
    double xWert = xMinWert;

    yMinWert = Double.parseDouble(yMinEingabe.getText());
    yMaxWert = Double.parseDouble(yMaxEingabe.getText());
    double yWert = 0.;

    int xPos = 0;
    int yPos = 0;

    while (xWert <= xMaxWert) {
      Color graphFarbe = Color.green;
      yWert = Ableitung2_funktionsWert (xWert, koeffizient5, koeffizient4, koeffizient3, koeffizient2);
      xPos = xSkalierung(xWert, xMinWert, xMaxWert);
      yPos = ySkalierung(yWert, yMinWert, yMaxWert);

      if (yPos>145 && yPos<495) {
      PunktMalen(Zeichenbereich, xPos, yPos, graphFarbe);
      }
      xWert = xWert + deltaX;

    }

  }


}

Hab im Internet etwas gefunden, dass mein Problem ähnlich behandelt. Aber ich verstehe es leider nicht.
Vielleicht versteht ihr es ja.
Hier ist es:

Code:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

/**
 * Sample applet that illustrates event consuming problem. When there is a
 * listeners of the specified event type registered on the component, the
 * component will not dispatch the event to the parent container after its
 * processing by listeners.
 *
 * As of JDK 1.4 this problem cannot be solved by event redispatching if
 * the component is a light-weight component!
 *
 * @version 0.1 (Apr 11, 2003)
 * @author  Ageenko
 */
public class EventConsuming extends Applet {
    private MyComponent c;
    private Label l1, l2;
    private Panel p;

    public EventConsuming() {
        setLayout(new BorderLayout());

        c = new MyComponent(Color.red);
        c.addMouseMotionListener(new ComponentMotionAdapter());

        p = new Panel();
        p.setBackground(Color.yellow);
        p.add(c);
        p.addMouseMotionListener(new ContainerMotionAdapter());

        l1 = new Label("Mouse location in container");
        l2 = new Label("Mouse location in component");

        add(p, BorderLayout.CENTER);
        add(l1, BorderLayout.NORTH);
        add(l2, BorderLayout.SOUTH);
    }

    /**
     * Mouse adapter for the container class.
     */
    private class ContainerMotionAdapter extends MouseMotionAdapter {
        public void mouseMoved(final MouseEvent e) {
            l1.setText("Container: (" + e.getX() + "," + e.getY() + ")");
        }
    }

    /**
     * Mouse adapter for the component class.
     */
    private class ComponentMotionAdapter extends MouseMotionAdapter {
        public void mouseMoved(final MouseEvent e) {
            l2.setText("Component: (" + e.getX() + "," + e.getY() + ")");
            // re-dispatch event not working for a light-weight component
            // redispatchEvent(e);
        }

        /**
         * This method redispatches the mouse event to parent container.
         * It translates coordinates from component to parent space as
         * well.
         *
         * @param e
         */
        public void redispatchEvent(final MouseEvent e) {

            final Component origin = e.getComponent();
            e.setSource(origin.getParent());
            e.translatePoint(origin.getX(), origin.getY());
            // problem is here! event is cast back here!
            origin.getParent().dispatchEvent(e);
        }

    }
}

/**
 * A simple light-weight component used for illustration purposes.
 */
class MyComponent extends Component {
    MyComponent(final Color c) {
        setForeground(c);
    }

    public void paint(final Graphics g) {
        g.setColor(getForeground());
        g.fillRect(0, 0, getWidth(), getHeight());
    }

    public Dimension getPreferredSize() {
        return new Dimension(100, 50);
    }

    public boolean isOpaque() {
        return true;
    }
}

Am besten wäre es ja die zwei zu kombinieren. Aber nach vielen vielen Versuchen hab ich es aufgegeben.
Könnt ihr mir helfen.

Danke im Vorraus.


Gruß Kostik
 

waldwichtel

Aktives Mitglied
Hab das Gleiche vor kurzem auch gemacht.

du musst den schon den MouseMotionListener verwenden und dann eben in der MouseMoved Methode die aktuellen Werte auslesen.

Code:
public class FunktionsZeichnungsPanel extends JPanel implements
		MouseMotionListener {...}

Code:
public void mouseMoved(MouseEvent e) {
		xMausPixelPosition = e.getX();
		YMausPixelPosition = e.getY();
		xMassPosition = ((double) xMausPixelPosition - (gesamtPanelBreite / 2))
				/ xMaßeinheit;
		yMassPosition = ((double) YMausPixelPosition - (gesamtPanelHoehe / 2))
				/ yMaßeinheit;
		repaint();

	}

Ich hab für die Werte private Variablen angelegt. Die Werden dann in der Paint-Methode eben zum Zeichnen verwendet:

Code:
private void erstellMauspositionsAnzeige(Graphics g) {
		g.drawLine(xMausPixelPosition - gesamtPanelBreite / 2,
				-gesamtPanelHoehe, xMausPixelPosition - gesamtPanelBreite / 2,
				gesamtPanelHoehe / 2);
		g.drawLine(-gesamtPanelHoehe,
				YMausPixelPosition - gesamtPanelHoehe / 2, gesamtPanelHoehe,
				YMausPixelPosition - gesamtPanelHoehe / 2);
		g.setColor(Color.white);
		g.fillRect(-gesamtPanelBreite / 2 + 10, -gesamtPanelHoehe / 2 + 10, 50,
				35);
		g.setColor(Color.black);
		g.drawRect(-gesamtPanelBreite / 2 + 10, -gesamtPanelHoehe / 2 + 10, 50,
				35);
		DecimalFormat df = new DecimalFormat("0.00");
		g.drawString("X: " + String.valueOf(df.format(xMassPosition)),
				-gesamtPanelBreite / 2 + 15, -gesamtPanelHoehe / 2 + 25);
		g.drawString("Y: " + String.valueOf(df.format(-yMassPosition)),
				-gesamtPanelBreite / 2 + 15, -gesamtPanelHoehe / 2 + 40);
	}

Die genaue Position im Koordinatensystem wird eben noch mit dem ZoomFacktor verrechnent. Dadurch bekommst du dann die Werte wie sie im System dargestellt sind. (z.B (1|0))
 
G

Guest

Gast
WOW!

Die Antwort kam ja Superschnell!!!! Vielen Dank dafür.

Aber leider weiss ich nicht genau wie ich deinen Tipp umsetzen soll.
Könntest du vielleicht sagen, wo ich das genau bei mir einfügen kann. Wäre supernett!!!
 

waldwichtel

Aktives Mitglied
Also so wie ich des jetzt mal im Kurzüberblick gesehen hab, musst du in deiner MouseMoved Methode nur folgendes Machen:
  • -Position des Mauszeigers ermitteln (in Pixelwerten)
    -In Masswerte umrechen
    -evtl. noch Runden
    -Masswerte auf die die Labels Ausgeben
Das is eingentlich alles.
Der Code sollte dir nur helfen die Befehle zu finden mit denen du genau das hinbekommst.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
R Brauche Hilfe beim fertigstellen eines Chat programms Java Basics - Anfänger-Themen 8
S brauche hilfe beim fehler finden Java Basics - Anfänger-Themen 2
C Brauche dringend hilfe beim exception im code Java Basics - Anfänger-Themen 5
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
Y Brauche Hilfe beim Programm Java Basics - Anfänger-Themen 83
M Brauche Hilfe beim Verstehen vom Quellcode Java Basics - Anfänger-Themen 4
V Brauche Hilfe beim Programmieren Java Basics - Anfänger-Themen 3
V Brauche Hilfe beim Programmieren Java Basics - Anfänger-Themen 9
S brauche hilfe beim dateien kopieren / bearbeiten Java Basics - Anfänger-Themen 3
E brauche hilfe beim KeyListener Java Basics - Anfänger-Themen 4
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
H Brauche Hilfe Java Basics - Anfänger-Themen 2
H Brauche hilfe Java Basics - Anfänger-Themen 3
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
H Brauche Hilfe in Java Eclipse Programmieraufgabe Neuling Java Basics - Anfänger-Themen 3
D Brauche Dringend Hilfe...Prozedur/Funktionsprozedur Ergebnis augeben Java Basics - Anfänger-Themen 11
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
M Brauche Hilfe bei If-Scheifen Java Basics - Anfänger-Themen 2
F ich brauche Hilfe bei Listen Java Basics - Anfänger-Themen 13
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
E Ich Brauche Hilfe Java Basics - Anfänger-Themen 3
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
S Brauche hilfe in Java [Fehler in mein Code]? Java Basics - Anfänger-Themen 2
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
TpKey10 Ich brauche Hilfe Java Basics - Anfänger-Themen 14
F Ich brauche Hilfe bei Objektorientierter Programmierung... Java Basics - Anfänger-Themen 19
L Input/Output Wurzelzeichen in der Konsole ausgeben | Brauche Hilfe Java Basics - Anfänger-Themen 6
J Brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 3
T Brauche Hilfe um ein Programm zu verstehe Java Basics - Anfänger-Themen 4
C Ich brauche hilfe für meine Klausur Java Basics - Anfänger-Themen 13
J Brauche Hilfe !! Java Basics - Anfänger-Themen 8
R Spielfeldbegrenzung einfügen (Java)? Brauche Hilfe! Java Basics - Anfänger-Themen 15
C Brauche dringend Hilfe. Umfrage mit ja und nein in Java erstellen? Java Basics - Anfänger-Themen 12
U Brauche Hilfe bei Programmierung einer Produktdatenbank App Java Basics - Anfänger-Themen 4
P Brauche Hilfe bei ResultSet mit MySQL Java Basics - Anfänger-Themen 6
T Datentypen Brauche Hilfe bei Arrays Java Basics - Anfänger-Themen 3
U Brauche Hilfe bei Bisektionsverfahren Java Basics - Anfänger-Themen 23
E Erste Schritte brauche hilfe zum verstehen einer Klasse(Tiefensuche) Java Basics - Anfänger-Themen 17
I Brauche Hilfe bei Schleifen Java Basics - Anfänger-Themen 18
B Java Graphen zeichnen - Brauche Hilfe Java Basics - Anfänger-Themen 9
S brauche hilfe bei Fehlersuche Java Basics - Anfänger-Themen 7
M JDK installieren Brauche dringend Hilfe Java Basics - Anfänger-Themen 2
L Brauche Hilfe bei Preisberechnungspogramm Java Basics - Anfänger-Themen 1
D Hilbert und Peano Kurve, ich brauche Hilfe Java Basics - Anfänger-Themen 4
S Brauche hilfe bei Pong (JFrame) Java Basics - Anfänger-Themen 2
V Hilfe-brauche eine Idee! Java Basics - Anfänger-Themen 5
A Erste Schritte Brauche Hilfe Java Basics - Anfänger-Themen 2
D Brauche Hilfe für mein übungsprogramm Java Basics - Anfänger-Themen 16
S Klassen Brauche Hilfe bei Erstellung einer Klasse für einen Tachenrechner!!! Java Basics - Anfänger-Themen 6
W Brauche hilfe bei Hausübung Java Basics - Anfänger-Themen 10
D Brauche Hilfe bei Modulo (Übungsaufgabe) Java Basics - Anfänger-Themen 14
X Brauche Hilfe bei printOnScreen Methode !!! Java Basics - Anfänger-Themen 2
H mysql brauche hilfe, wer kann eine (längere) aufgabe für mich erledigen Java Basics - Anfänger-Themen 2
K Erste Schritte Brauche Hilfe bei Starten des Programms Java Basics - Anfänger-Themen 11
B Erste Schritte HILFE Brauche ein Beispiel für korrekte Syntax mit Semantikfehlern Java Basics - Anfänger-Themen 6
H Java von Kopf bis Fuß: Brauche Hilfe Java Basics - Anfänger-Themen 6
B Erste Schritte Brauche Hilfe bei einem Java-Taschenrechner Java Basics - Anfänger-Themen 11
S Erste Schritte BlueJ-Aufgabe: Programmcode / Brauche dringend Hilfe !!! Java Basics - Anfänger-Themen 37
A Brauche Hilfe bei Division von Feldzahl durch Ganzzahl Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 2
G Brauche bitte Hilfe, bei umgekehrter Ausgabe!! Java Basics - Anfänger-Themen 6
B Erste Schritte Brauche Hilfe für ein UML Diagramm Java Basics - Anfänger-Themen 7
S ICh brauche Hilfe,weil Java in der Schule Java Basics - Anfänger-Themen 11
B Brauche Hilfe mit Aufgaben mit dem JavaEditor Java Basics - Anfänger-Themen 8
I Primzahlenberechnung [Brauche Hilfe] Java Basics - Anfänger-Themen 5
F Reader - brauche Hilfe Java Basics - Anfänger-Themen 19
T Brauche Hilfe bei Variabeln Java Basics - Anfänger-Themen 4
J Brauche Hilfe mit replaceFirst Java Basics - Anfänger-Themen 10
M Brauche Hilfe bei Struktogramm Java Basics - Anfänger-Themen 9
T Datentypen brauche dringende hilfe!dezi in Asci umwandeln! Java Basics - Anfänger-Themen 4
X DB4O Collections and Arrays, brauche dringend Hilfe! Java Basics - Anfänger-Themen 3
B brauche hilfe bei funktion erstellen Java Basics - Anfänger-Themen 8
S Brauche Hilfe bei if/else Java Basics - Anfänger-Themen 3
N Brauche Hilfe mit Kollisionserkennung! Java Basics - Anfänger-Themen 16
J Brauche Hilfe bei Methode Java Basics - Anfänger-Themen 9
G 2 dim. Strsing Arrays brauche Hilfe Java Basics - Anfänger-Themen 20
A Brauche hilfe String untertrennen Java Basics - Anfänger-Themen 12
L Brauche bitte dringend Hilfe für Klausur Java Basics - Anfänger-Themen 8
H Brauche bei einen bsp hilfe! Java Basics - Anfänger-Themen 2
D Währungsrechner brauche Hilfe Java Basics - Anfänger-Themen 10
R Vokabeltrainer / Brauche Hilfe Java Basics - Anfänger-Themen 8
L Brauche Hilfe! Java Basics - Anfänger-Themen 8
S WAV-DATEIEN INTERPRETIEREN UND UMWANDELN Brauche Hilfe Java Basics - Anfänger-Themen 3
A Brauche Hilfe mit einer Forschleife Java Basics - Anfänger-Themen 20
N brauche Hilfe Stringverarbeitung Java Basics - Anfänger-Themen 9
JeromeM90 (Brauche Hilfe) Binär- in Dezimalzahlkonverter Java Basics - Anfänger-Themen 8
M Brauche Hilfe bei Javaapplication für JuFo Java Basics - Anfänger-Themen 21
A brauche hilfe ( gpanel und n-ecke) Java Basics - Anfänger-Themen 11
S Brauche Hilfe mit waitFor() Java Basics - Anfänger-Themen 4
N Brauche dringende Hilfe Java Aplett läuft nicht! Java Basics - Anfänger-Themen 3
D Brauche Hilfe: Funktion zum Kombinieren von Werten Java Basics - Anfänger-Themen 5
T Brauche Hilfe: Access DB + Hashmap Java Basics - Anfänger-Themen 2
N brauche hilfe zu tictactoe Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben