Swing Koordinatensystem wird gezeichnet verschwindet aber und die Einteilungen bleiben nicht bestehen

Alex2013

Bekanntes Mitglied
Hallo Leute,

ich wollte mich mal an ein Koordinatensystem wagen. Also es zu zeichnen und hierauf Linien sichtbar zu machen. Später kommen hier noch weitere Punkte zu, aber zunächst sollte ja auch die Grundfunktion richtig funktionieren.

Das Problem ist folgendes. Das Koordinatensystem wird korrekt gezeichnet. Nachdem es aber sehr kurz richtig angezeigt wird verschwindet es und es sind nur noch 2 Linien sichtbar (x und y achse).
Wenn man es vergrößert oder verkleinert, sollten ebenso sämtliche Inhalte sichtbar bleiben bzw. durch weiterführende Optionen, welche später hinzugefügt werden, erweitert werden können und diese ebenso sichtbar sein und bleiben. Aber das ist hierbei auch nicht der Fall... :-(

Was mache ich falsch bzw. muss/kann ich anders machen um diese Probleme zu beseitigen?
(Vielleicht löst sich durch das Beheben des einen Problems auch das andere...)

Hier der Code der Hauptklasse:

Java:
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JFrame;
import javax.swing.JPanel;


public class KoordinatensystemMitKoordinaten extends JFrame
{
        private static final long serialVersionUID = 1L;
        int x3,x4,y3,y4;
        Koordinaten ko;
        int x,y;
        
        Container c;
        
        //Die Arrays mit den Zwischenschritten werden initialisiert
        Integer []xKo=new Integer[8];
        Integer []yKo=new Integer[8];
        
        public KoordinatensystemMitKoordinaten()
        {
                setSize(900, 700);
        setLocationRelativeTo(null);
        setVisible(true);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        drawLine(x3, x4, y3, y4);
    }
        
        public void paint(Graphics g)
        {
                super.paintComponents(g);
                Graphics2D g2=(Graphics2D)g;
                
                //x Achse
                g.drawLine(0,getHeight()/2 ,getWidth(),getHeight()/2);
       
                //y Achse
                g.drawLine(getWidth()/2, 0, getWidth()/2, getHeight());
                
                String[] line=new String[getWidth()];
                //y linien
                for(int i=0;i<line.length;i++)
                {
                        g.drawLine((getWidth()/2)-5,y+=10,(getWidth()/2)+5,y);
                }
                //x linien
                String[] line2=new String[getHeight()];
                for(int j=0;j<line2.length;j++)
                {
                        g.drawLine(x+=10, (getHeight()/2)-5, x, (getHeight()/2)+5);
                }
        }
        
        public void drawLine(int x3,int x4,int y3,int y4)
        {
                paint(getGraphics());

                x3=(getWidth()-getWidth())+50;
                x4=(getHeight()-getHeight())+200;
                y3=(getWidth()-getWidth())+500;
                y4=(getHeight()-getHeight())+300;
                getGraphics().drawLine(x3,x4,y3,y4);
                repaint();
        }

        public static void main(String []args)
        {
                new KoordinatensystemMitKoordinaten();
        }
}

Und die Klasse zum Speichern und wiedergeben von weiteren Koordinaten (für eine spätere Erweiterung):

Java:
public class Koordinaten
{
        private String x,y;
        int x2,y2;
        boolean stat=true;
        KoordinatensystemMitKoordinaten kmk;
        Integer []xKo=new Integer[8];
        Integer []yKo=new Integer[8];
        
        
        public int getX2() {
                return x2;
        }

        public void setX(String x) {
                this.x = x;
                int x2=Integer.parseInt(x);
                kmk.repaint();
        }

        public int getY2() {
                return y2;
        }

        public void setY(String y) {
                this.y = y;
                int y2=Integer.parseInt(y);
                kmk.repaint();
        }
        
        public void setKoX(int x2)
    {
                stat=true;
                
                if(stat==true)
                {
                        xKo[0]=this.getX2();
                        xKo[1]=this.getX2();
                        xKo[2]=this.getX2();
                        xKo[3]=this.getX2();
                        xKo[4]=this.getX2();
                        xKo[5]=this.getX2();
                        xKo[6]=this.getX2();
                        xKo[7]=this.getX2();
                }
        }
        
        public void setKoY(int y2)
    {
                stat=false;
                
                if(stat==false)
                {
                        yKo[0]=this.getY2();
                        yKo[1]=this.getY2();
                        yKo[2]=this.getY2();
                        yKo[3]=this.getY2();
                        yKo[4]=this.getY2();
                        yKo[5]=this.getY2();
                        yKo[6]=this.getY2();
                        yKo[7]=this.getY2();
                }
        }
}

Für eine(n) Lösung oder Lösungsansatz wäre ich dankbar :)

Lg

Ich habe hierzu auch schon dieses Forum durchsucht und einiges bei Google gesucht und gefunden, aber nicht genau das, was hier vlt. helfen könnte/konnte. Bzw. das Angewandte brachte keine Verbesserung.
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
Erweitere JComponent, und packe deine Zeichenlogik in die paintComponent(Graphics g) Methode. Nur dort sollte gezeichnet werden.
Bei deinem Ansatz überschreibst du die paint-methode (was möglich, aber unpraktisch ist, weil du so dein Koordinatensystem nicht als JComponent in eine existierende Gui einbetten kannst), hast eine drawLIne-Methode, die im Konstruktor aufgerufen wird, aber danach vielleicht nie mehr (oder doch? Wer weiss), und in deiner drawLIne-Methode rufst du paint(getGraphics()) (wobei man getGraphics() von Components eigentlich nie verwenden sollte), und holst dir dann nochmal den getGraphics() und zeichnest da noch etwas drauf.
Ehrlich: das sieht ziemlich chaotisch aus. Wo hast du diesen Ansatz her?
 

Alex2013

Bekanntes Mitglied
Nun ja, das habe ich selbst überlegt. Da ich es ohne UML Vorlage bzw. ohne UML Ausarbeitung durchführen wollte.
Was für einen Ansatz würdest du vorschlagen? MVC?
 

Foxei

Bekanntes Mitglied
Hallo Harry Kane,
dein Fehler ist ganz einfach wenn du getGraphics.drawLine() aufruft Malt er einmahlig eine Linie. Bei nächsten repaint verschwindet sie. Du musst die Koordinaten in einem Array Speichern und diese Array in der PaintComponent Methode durchlaufen und zeichnen lassen.

p.s. dein Code ist ziemlich Unübersichtlich und du befolgst bestimmte programmier Standarts nicht :/ ich bin im Moment nicht zuhause desshalb kann ich dir keine Verbesserungen zeigen. Ich werde mich nach dem Wochenende dir nochmal zuwenden und dir schreiben was verbesserungs würdig ist.
Gruß Simon
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
Nun ja, das habe ich selbst überlegt. Da ich es ohne UML Vorlage bzw. ohne UML Ausarbeitung durchführen wollte.
Was für einen Ansatz würdest du vorschlagen? MVC?
Also ehrlich, hier musste ich schon etwas schmunzeln. Mit meiner Frage zielte ich eher darauf ab, warum du deinen Zeichencode so chaotisch verstreut hast, anstatt in da zu bündeln, wo er hingehört. Keine Tutorials zum Thema "Zeichnen in Swing" gesucht oder gefunden? Irgendwoher musst du ja den Ansatz bekommen haben, bei einer von JFrame abgeleiteten Klasse die paint-Methode zu überschreiben, und dir mit getGraphics() einen Graphics zu beschaffen. Und mich hat nur interessiert, woher.
Wen du mich schon fragst, was ich für einen Ansatz vorschlagen würde: wie würdest du denn den Ansatz nennen, den du gewählt hast?
In deiner KoordinatensystemMitKoordinaten gibt es übrigens noch ein nicht initialisiertes Container und Koordinaten Objekt. Was haben die denn dadrin zu suchen?
@Foxei: inhaltliche fast vollständige Zustimmung meinerseits, nur daß ich nicht der Fragesteller bin.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Koordinatensystem wird nicht gezeichnet AWT, Swing, JavaFX & SWT 5
S AWT Schiffeversenken-Koordinatensystem wird nicht richtig angezeigt. AWT, Swing, JavaFX & SWT 6
L JavaFX KoordinatenSystem AWT, Swing, JavaFX & SWT 1
M Koordinatensystem für Projektorientiertes Arbeiten AWT, Swing, JavaFX & SWT 2
J Koordinatensystem AWT, Swing, JavaFX & SWT 2
S Koordinatensystem AWT, Swing, JavaFX & SWT 6
El_Lobo Swing bei Update von Graphik Koordinatensystem nicht jedesmal neu zeichnen AWT, Swing, JavaFX & SWT 2
K OpenGL koordinatensystem AWT, Swing, JavaFX & SWT 7
M Graphics auf JFrame Koordinatensystem AWT, Swing, JavaFX & SWT 3
U Swing KSKB: JComboBox Koordinatensystem AWT, Swing, JavaFX & SWT 3
L SWT Draw2d und Gef Koordinatensystem und Gitternetz? AWT, Swing, JavaFX & SWT 5
L SWT Koordinatensystem in Swt? AWT, Swing, JavaFX & SWT 4
C AWT Graphic 2D Frage zum Koordinatensystem AWT, Swing, JavaFX & SWT 6
M Aktuelle Mausposition im Koordinatensystem AWT, Swing, JavaFX & SWT 3
G Werte in Koordinatensystem zeichnen AWT, Swing, JavaFX & SWT 11
H Darstellung einer Kurve im Koordinatensystem AWT, Swing, JavaFX & SWT 8
L Java 3d Koordinatensystem AWT, Swing, JavaFX & SWT 3
D JPanel Koordinatensystem -> Ursprung verändern. AWT, Swing, JavaFX & SWT 2
C Koordinatensystem drehen AWT, Swing, JavaFX & SWT 3
G Linien in ein Koordinatensystem zeichen AWT, Swing, JavaFX & SWT 7
H funktionen in ein koordinatensystem zeichen AWT, Swing, JavaFX & SWT 5
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
G JavaFX LineChart Datenpunkte Markierung wird abgeschnitten AWT, Swing, JavaFX & SWT 1
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
ProggersWorld JavaFX TextArea BackgroundImage wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
izoards Outlook Mail erstellen - Signatur wird nicht angezeigt. AWT, Swing, JavaFX & SWT 3
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
S Next_Button wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 6
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
J Komponente wird manchmal falsch gezeichnet AWT, Swing, JavaFX & SWT 0
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
J setOnCloseRequest wird nicht ausgelöst AWT, Swing, JavaFX & SWT 3
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
B JavaFX Bei Scenen-Wechsel im primaryStage wird aktuelle Fenstergröße nicht mit übernommen AWT, Swing, JavaFX & SWT 16
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
kodela BufferStrategy wird nicht gefunden AWT, Swing, JavaFX & SWT 5
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
S ImageView wird dem Gridpane nicht zugefügt AWT, Swing, JavaFX & SWT 1
G Repaint wird nicht durchgeführt AWT, Swing, JavaFX & SWT 8
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing GUI wird nach invokeLater() langsam AWT, Swing, JavaFX & SWT 19
Bluedaishi TableView mit Combox wert wird nicht in die TableView gesetzt AWT, Swing, JavaFX & SWT 38
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
T JavaFX Nach Zoomen wird an falscher Stelle gezeichnet AWT, Swing, JavaFX & SWT 0
kodela Swing Letzte Änderung in der Tabelle wird nicht gespeichert AWT, Swing, JavaFX & SWT 5
cool_brivk24 AWT BufferedImage wird nicht geladen AWT, Swing, JavaFX & SWT 17
S JavaFX Wird es überhaupt genutzt? AWT, Swing, JavaFX & SWT 3
FRI3ND GUI wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Canvas wird nicht angezeigt AWT, Swing, JavaFX & SWT 10
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
ralfb1105 Swing Wert in JTextField wird falsch ausgegeben AWT, Swing, JavaFX & SWT 2
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
J Aus welchen Grund wird der Button nicht angezeigt im GridPane? AWT, Swing, JavaFX & SWT 1
J MouseListener wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 4
E Swing Liste in Scrollpane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Controller wird zu groß, was tun ? AWT, Swing, JavaFX & SWT 5
CptK Wieso wird nur ein Teil meiner Buttons angezeigt? AWT, Swing, JavaFX & SWT 1
T Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
M Aktion ausführen wenn ein JRadiobutton deselektiert wird. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
zhermann TableView wird nicht gefüllt AWT, Swing, JavaFX & SWT 14
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
zhermann JavaFX Main App wird nicht geöffnet AWT, Swing, JavaFX & SWT 6
Naxon89 JavaFX Image wird nicht korrekt geladen AWT, Swing, JavaFX & SWT 3
4 Swing JLabel wird ,,abgehackt" AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
P Kein Bild wird angezeigt bei ImageIcon AWT, Swing, JavaFX & SWT 16
MaxG. JavaFX Inhalt in Tableview wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
A Swing Tabelle wird bei Betätigung des Button nicht befüllt AWT, Swing, JavaFX & SWT 17

Ähnliche Java Themen

Neue Themen


Oben