Achsenbeschriftung eines Koordinatenkreuzes

Status
Nicht offen für weitere Antworten.
K

kafaaaloo

Gast
Hallo,

habe im rahmen eines Projektes einen Plotter programmiert in Java (Teilprojekt) wird am Ende zusammengefügt mit den anderen teilprojekten wie zB (Parser und 3d-plotter). So nun zu meinem "kleinen" Problem, versuche nun abhängig von der Funktion die Achsenbeschriftung irgendwie hinzubekommen... xmin & xmax wird mir übergeben.. nun wollte ich wenigstens eine Einteilung haben.

Hier der Quelltext, vllt. hat ja jemand nen Vorschlag...
Code:
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.awt.Graphics;
import java.awt.Dimension;
import java.awt.Color;


public class Plotter extends JPanel
{
        BufferedImage graph = new BufferedImage(600, 600, BufferedImage.TYPE_INT_RGB);
        JFrame frame = new JFrame("Plotter");
        // wie fein gezeichnet wird der Graph sein?
        // Schrittweite für die Schleife
        double granularity = 0.1;       
        // scale-Faktor
        int scale = 30;
       
        public Plotter(int farbe, int xmin, int xmax, int strichwahl) {
                super();
                setPreferredSize(new Dimension(graph.getWidth(), graph.getHeight()));
                Graphics gr = graph.getGraphics();
                gr.setColor(Color.white); // Hintergrund
                gr.fillRect(0,0,graph.getWidth(), graph.getHeight());
                double x=xmin;
                double y=0.0;
                double lastX=0.0;
                double lastY=0.0;
                // Koordinatensystem
                gr.setColor(Color.black);
                gr.drawLine(graph.getWidth()/2, 0, graph.getWidth()/2, graph.getHeight()); //Y-Achse
                gr.drawLine(graph.getWidth()/2-5, 10, graph.getWidth()/2, 0);//PFEIL Y-Achse
                gr.drawLine(graph.getWidth()/2+5, 10, graph.getWidth()/2, 0);
                gr.drawLine(0, graph.getHeight()/2, graph.getWidth(), graph.getHeight()/2); //X-Achse
                gr.drawLine(graph.getWidth()-10, graph.getHeight()/2-5, graph.getWidth(), graph.getHeight()/2); //PFEIL X-Achse
                gr.drawLine(graph.getWidth()-10, graph.getHeight()/2+5, graph.getWidth(), graph.getHeight()/2);
                gr.drawString("x", graph.getWidth()-20, graph.getHeight()/2-10); //x-Achsenbeschriftung
                gr.drawString("y", graph.getWidth()/2+10, 20); //y-Achsenbeschriftung
                for (int i=-graph.getWidth()/2; i<=graph.getWidth()/2; i+=10) // Achseneinteilung klein
                {	 gr.drawLine(
                		graph.getWidth()/2-4, graph.getHeight()/2+i,
                		graph.getWidth()/2+4, graph.getHeight()/2+i);
                }

                for (int i=-graph.getWidth()/2; i<=graph.getWidth()/2; i+=10)
                { 	gr.drawLine(
                		graph.getWidth()/2+i, graph.getHeight()/2-4,
                		graph.getWidth()/2+i, graph.getHeight()/2+4);
                }
                for (int i=-graph.getHeight()/2; i<=graph.getHeight()/2; i+=50) //Achseneinteilung gross
                {	 gr.drawLine(
                		graph.getWidth()/2-10, graph.getHeight()/2+i,
                		graph.getWidth()/2+10, graph.getHeight()/2+i);
                }
                for (int i=-graph.getHeight()/2; i<=graph.getHeight()/2; i+=50)
                { 	gr.drawLine(
                		graph.getWidth()/2+i, graph.getHeight()/2-10,
                		graph.getWidth()/2+i, graph.getHeight()/2+10);
                }
                gr.drawString("", graph.getWidth()/2-25,
                	graph.getHeight()/2-45);
                gr.drawString("", graph.getWidth()/2+45,
                	graph.getHeight()/2-15);
                
                
                // Graph
                switch (farbe){ // Farbwahl d. Funktion
                
                case 1: gr.setColor(Color.BLUE); break;
                case 2: gr.setColor(Color.CYAN); break;
                case 3: gr.setColor(Color.DARK_GRAY); break;
                case 4: gr.setColor(Color.GRAY); break;
                case 5: gr.setColor(Color.RED); break;
                case 6: gr.setColor(Color.MAGENTA); break;
                case 7: gr.setColor(Color.ORANGE); break;
                case 8: gr.setColor(Color.PINK); break;
                case 9: gr.setColor(Color.YELLOW); break;
                default: gr.setColor(Color.BLACK);
                }
                for (x=xmin; x<xmax; x+=granularity) {
                        y = funktion(x);      // Funktion  
                     
                        
                        switch (strichwahl){ // Strichwahl d. Funktion; 0: durchgezogene - case 1: gepunktete Linie
                        case 0: gr.drawLine((int)lastX, (int)lastY, (int)(graph.getWidth()/2+x*scale), (int)(graph.getHeight()/2-y*scale) );
                      //
                        case 1: gr.drawOval((int)lastX, (int)lastY, 1, 1);
                        case 2: gr.drawRect((int)lastX, (int)lastY, 1, 7);
                        
                        }
                        lastX = (int)(graph.getWidth()/2+x*scale);
                        lastY = (int)(graph.getHeight()/2-y*scale);
                }
               
                frame.setContentPane(this);
                frame.pack();
                frame.setVisible(true);       
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        
        public double funktion(double x) {
        	return 2*x*x; // hier die Funktion
        	
        }
       
        public void paintComponent(Graphics g) {
                super.paintComponent(g);
                g.drawImage(graph, 0, 0, null);
        }
       
        public static void main (String args[]) {
                new Plotter(5,-50,50,0);
        }
}
 

André Uhres

Top Contributor
Code:
...
    public Plotter(int farbe, int xmin, int xmax, int strichwahl) {
...
        for (int i=-graph.getHeight()/2; i<=graph.getHeight()/2; i+=50) //Achseneinteilung gross
        {    gr.drawLine(
                     graph.getWidth()/2-10, graph.getHeight()/2+i,
                     graph.getWidth()/2+10, graph.getHeight()/2+i);
             String zahl = String.valueOf(i);
             if(i == 0) zahl = "";
             int width = gr.getFontMetrics().stringWidth(zahl);
             int x1 = graph.getWidth()/2-11-width;
             int y1 = graph.getHeight()/2+i+4;
             if(y1 < 10) y1 = 10;
             if(y1 > graph.getHeight()) y1 = graph.getHeight();
             gr.drawString(zahl, x1, y1);
        }
        for (int i=-graph.getHeight()/2; i<=graph.getHeight()/2; i+=50) {
            gr.drawLine(
                    graph.getWidth()/2+i, graph.getHeight()/2-10,
                    graph.getWidth()/2+i, graph.getHeight()/2+10);
            String zahl = String.valueOf(i);
            if(i == 0) zahl = "";
            int width = gr.getFontMetrics().stringWidth(zahl);
            int x1 = graph.getWidth()/2+i-width/2;
            int y1 = graph.getHeight()/2+21;
            if(x1 < 0) x1 = 0;
            if(x1+width > graph.getWidth()) x1 = graph.getWidth()-width;
            gr.drawString(zahl, x1, y1);
        }
...
    }
...
 
K

kafaaaloo

Gast
ok, hab nun bissl "rumgespielt" aber wenn ich xmin & xmax änder' , dann bleibt die achseneinteilung konstant - sollte aber von xmin & xmax abhängig sein :(
oder funktioniert e sbei mir bloss nicht wie es sollte?
 
G

Guest

Gast
Ok habs nun in Abhängigkeit von xmin,xmax,fmin & fmax hinbekommen... :) vielen dank :toll:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Druckbarer Bereich eines Druckers ermitteln. Java Basics - Anfänger-Themen 8
O Projektstruktur eines neuen Maven-Projektes, Ordner src? Java Basics - Anfänger-Themen 8
G Ungefähre Restdauer eines Kopiervorgangs ermitteln Java Basics - Anfänger-Themen 3
D Erste Schritte Frage eines absoluten Anfängers Java Basics - Anfänger-Themen 3
R Operatoren Klausurenfrage: Auswertungspräzedenz eines komplizierten Ausdrucks Java Basics - Anfänger-Themen 6
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
walid Öffnungszeiten eines Geschäftes Java Basics - Anfänger-Themen 3
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
B Synchronisation eines kleinen Museums Java Basics - Anfänger-Themen 47
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
Sachinbhatt Was ist die Notwendigkeit eines Sammlungsframeworks in Java? Java Basics - Anfänger-Themen 2
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
A Rekursive Implementation eines Codes Java Basics - Anfänger-Themen 4
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
M Wie erreiche ich das Vorwärtsgehen eines Roboters? Java Basics - Anfänger-Themen 2
M Wie erreiche ich es das Vorwärtsgehen eines Roboters? Java Basics - Anfänger-Themen 0
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
A Optimierung eines Programms: Mergen der Dateien Java Basics - Anfänger-Themen 23
melisax Alle Möglichkeiten eines Wortes angeben Java Basics - Anfänger-Themen 3
A Java, verarbeitung eines xml-files Java Basics - Anfänger-Themen 2
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
P Drei Zahlen eines Würfelspiels auswerten Java Basics - Anfänger-Themen 7
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26
C Überprüfen eines Programms auf Syntaxfehler Java Basics - Anfänger-Themen 3
S Wie kann ich den Bereich eines Integers begrenzen? Java Basics - Anfänger-Themen 2
nonickatall Grundsätzliches Verständnisproblem des Aufbaus eines Programms Java Basics - Anfänger-Themen 19
B Downgrade eines bestehenden Projektes Java Basics - Anfänger-Themen 5
amelie123456 Geschwindigkeit der Methode bewegeDich eines Objekts ändern Java Basics - Anfänger-Themen 2
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
J maximaler Wert eines Integers Java Basics - Anfänger-Themen 14
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
Z Rückgabe eines Values in umgekehrte richtung Java Basics - Anfänger-Themen 5
L Methode zum invertieren eines Arrays Java Basics - Anfänger-Themen 7
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
M Benutzereingabe eines Codes verbessern Java Basics - Anfänger-Themen 3
B Modulo-Operator anhand eines Beispieles erklären Java Basics - Anfänger-Themen 7
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
Kawastori Größe eines Arrays bestimmen Java Basics - Anfänger-Themen 13
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
C Wie kann ich Versionen eines Projektes in Eclipse erstellen? Java Basics - Anfänger-Themen 3
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
A Teilen eines Arrays Java Basics - Anfänger-Themen 5
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
R Löschen und ausgeben eines Teilbaums Java Basics - Anfänger-Themen 3
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
M Hilfe bei Strukturierung eines Buchungssystems Java Basics - Anfänger-Themen 3
M Erstellen eines insets Objekts, GridBagLayout Java Basics - Anfänger-Themen 13
M Rückgabe eines Arrays Java Basics - Anfänger-Themen 10
Z Erste Schritte Indexe innerhalb eines Arrays zusammensählen Java Basics - Anfänger-Themen 14
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
A Freie Stelle eines Arrays Java Basics - Anfänger-Themen 17
C Erstellen eines Widerstandsnetzwerks Java Basics - Anfänger-Themen 10
C Methode Seiten tauschen eines erstellten Rechtecks mit Seite A und B Java Basics - Anfänger-Themen 9
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
F Berechnung der Rektaszension und Deklination eines Sterns Java Basics - Anfänger-Themen 7
1 Erste Schritte Was denkt ihr über eines meiner ersten Javaprogramme? Java Basics - Anfänger-Themen 2
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
M Hinzufügen eines Objekts auf ein Map Java Basics - Anfänger-Themen 4
M Auf einen Array innerhalb eines Objekts zugreifen Java Basics - Anfänger-Themen 5
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
S Ersetzen eines Asterix in einem String Java Basics - Anfänger-Themen 8
M Struktur eines Fotobuches Java Basics - Anfänger-Themen 6
J Implementierung eines Zustandsdiagramms Java Basics - Anfänger-Themen 19
X Modellieren eines Buchungssystems für Busfahrkarten Java Basics - Anfänger-Themen 53
T Prüfung auf Existenz eines Dialogfensters Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben