# JPanel dynamisch (Koordinatensystem)?



## xdavidx (25. Sep 2008)

Hey,

ich habe mir ein Koordinatensystem in einem JPanel geschrieben!

Alle Berechnungen haben als Grundlage die Breite und Höhe des Panels!

Ich würde nun gerne eine feste Fenstergröße haben zb 600*600 aber innerhalb des Panels 6000*6000!

Also in dem 6000*6000 Raum solll man sich frei bewegen könne:

Beispiel:

http://www.arndt-bruenner.de/mathe/java/plotter.htm#wertetabelle

HAt jemand eine Idee wie ich sowas programmieren kann?

Vlg


----------



## SlaterB (25. Sep 2008)

eine Möglichkeit:
durch die Mausbewegung setzt du irgendwelche Klassenattribute x und y
und im repaint -> paintComponent berücksichtigst du das, malst den Ausschnitt des 6000er Panels, der bei x,y liegt


----------



## xdavidx (25. Sep 2008)

Verstehe nicht ganz Slater 
Haste einen Bsp. Code?


----------



## SlaterB (25. Sep 2008)

verstehe nicht, was du daran nicht verstehst 

und für Code ist das ja nun nicht gerade ein triviales Thema


----------



## xdavidx (25. Sep 2008)

Achso ich verstehe es nun doch ^^
Muss aber kurz drüber nachdenken =)


----------



## xdavidx (25. Sep 2008)

Ich habe in meinem JPanel per setPreferredSize die Größe gesetzt soll ich dort dann einfach auf 6000*6000 ändern? und dann das JPanel in einem 600*600 Frame adden?


----------



## SlaterB (25. Sep 2008)

setPreferredSize ist die angezeigte Größe, die bleibt bei 600,600, falls du nicht gerade ein riesigen JScrollPane verwenden willst

es geht bei meiner Idee nur darum welche 600x600 in paint gezeichnet werden,
das kann man sich bei jedem repaint ja neu aussuchen

normalerweise wird die Mitte oder irgendeine andere Startposititon gezeichnet,
wird mit der Maus nach links bewegt, so führt das zunächst nur dazu, dass x auf -100 steht oder so (aus der Mausbewegung errechnet)
-> beim nächsten repaint dann nicht die Mitte sondern etwas weiter links malen,

das setzt natürlich voraus, dass man in paint einen beliebigen Ausschnitt aus einem größeren Bild malen kann, ordentlich was zu rechnen


----------



## xdavidx (25. Sep 2008)

Achso ok so möchte ich es nicht machen sind mir zu viele Berechnungen!

Ich möchte das Mein Panel schon komplett in dem 6000*6000 Raum gezeichnet ist und dann einfach nur geladen wird!

Ich habe grade das mit dem JScrollPane versucht!

Also JPanel mit 6000*6000 dann in ein ScrollPane verpackt und auf einen Frame gesetzt!

Hm aus irgendwelchen Gründen kommt es zu sehr merkwürdigen Grafikfehlern!


----------



## SlaterB (25. Sep 2008)

denkbar ist evtl. auch, auf ein 6000x6000 Image zu malen und dann davon den richtigen Ausschnitt, das ist sehr sparsam,

das direkte Malen hat den Vorteil, dass man das Bild individuell anpassen kann,
so wie in
http://www.arndt-bruenner.de/mathe/java/plotter.htm#wertetabelle 
die x- und y-Achse korrekt eingeblendet werden


----------



## xdavidx (25. Sep 2008)

Woher kommen die Grafikfehlern beim scrollen?


----------



## SlaterB (25. Sep 2008)

jo, du hast mal eben ein Programm mit Fehlern und ich weiß woher sie kommen 
ne doch nicht (aber vielleicht wer anders)


----------



## xdavidx (25. Sep 2008)

Hmhm gibt es nicht eine MousePane?^^


----------



## xdavidx (25. Sep 2008)

Beim Scrollen verzerrt die ganze Grafik! Woran liegt das?


----------



## Marco13 (25. Sep 2008)

Ich könnte jetzt ein Testprogramm schreiben, wo ich nichts anderes mache, als ein 6000x6000-JPanel in eine ScrollPane zu packen, und da ein Gitter reinzumalen, und das dann hier posten und dazuschreiben: "Geht doch". Aber warum sollte ich?


----------



## xdavidx (25. Sep 2008)

Marco13 was das für ein sinnloser Post?


----------



## SlaterB (25. Sep 2008)

es ist die einzig sinnvolle Antwort auf die schon von mir als sinnlos bezeichnete Frage 'ich habe irgendein Programm und irgendeinen Fehler, was ist die genaue Lösung/ Korrektur dafür?'


----------



## xdavidx (25. Sep 2008)

Aha SlaterB du wirst unprofessionell...

In meinem Code ist kein Fehler. Evtl. ist ja ein Bug.


----------



## Marco13 (25. Sep 2008)

Er nähert sich eben an .... :bae: 

_In meinem Code ist kein Fehler_
Was noch zu beweisen wäre.


_Evtl. ist ja ein Bug._ 
Ja. Möglich. Ich habe noch nie ein 6000x6000-JPanel in eine ScrollPane gepackt. Vielleicht gibt es da einen Bug. Dann würde ich dich aber an http://bugs.sun.com/ verweisen.


----------



## xdavidx (25. Sep 2008)

Großkotzige Menschen kompensieren oft etwas... Marco13.


----------



## Marco13 (26. Sep 2008)

Ja, meistens ihr eigenes Minderwertigkeitsbewußtsein. Aber wie sagte schon Klaus Kinski: "Niveau sieht nur von unten aus wie Arroganz".


----------



## xdavidx (26. Sep 2008)

Aber du bist weder ein Klaus Kinski noch ein James Gosling.


----------



## SlaterB (26. Sep 2008)

im Vergleich zu gewissen anderen Personen schon 
 :bae:


----------



## Marco13 (26. Sep 2008)

Ach, was liegt mir dran...

```
import javax.swing.*;
import java.awt.*;

class GehtDoch extends JFrame
{
    public static void main(String args[])
    {
        new GehtDoch();
    }


    public GehtDoch()
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(600,600);
        JPanel panel = new JPanel()
        {
            public void paintComponent(Graphics g)
            {
                super.paintComponent(g);
                g.setColor(Color.BLACK);
                for (int i=0; i<getWidth(); i+=50)
                {
                    g.drawLine(i,0,i,getHeight());
                }
                for (int i=0; i<getHeight(); i+=50)
                {
                    g.drawLine(0,i,getWidth(),i);
                }
                g.setColor(Color.RED);
                for (int i=0; i<getHeight(); i+=75)
                {
                    for (int j=0; j<getWidth(); j+=75)
                    {
                        g.drawString("Geht doch", i, j);
                    }
                }
            }
        };
        panel.setPreferredSize(new Dimension(6000,6000));
        getContentPane().add(new JScrollPane(panel));
        setVisible(true);
    }

}
```


----------



## xdavidx (1. Okt 2008)

Das habe ich schon lange 

Trotzdem Danke!

Evtl. liegt es an meinem System...


----------



## Marco13 (2. Okt 2008)

Üblicherweise verzeichte ich ja auf Posts, in denen dieser Smiley vorkommt, aber: Das hab' ich ja gesagt  :x !!! Und du hast den Post als "sinnlos" bezeichnet - wenn du nicht sagst, wo dein Problem liegt, kann dir keiner helfen. *kurz überlegt, xdavidx auf die ignorelist zu packen ....*


----------



## xdavidx (2. Okt 2008)

Ich hab nie gesagt du sollst etwas schreiben was ich schon habe


----------



## Quaxli (2. Okt 2008)

Du willst es Dir mit Gewalt mit Leuten verderben, die Dir helfen wollen, oder?


----------



## xdavidx (6. Okt 2008)

Person A hat ein Problem das aber nicht an der fehlenden Kompetenz liegt.

Person B kommt daher nach dem Motto "Höhö ich kann das weil ich der beste bin aber wieso sollte ich es dir zeigen?"

Person A denkt boah wie sozial Inkompetent Person B ist.

+ Der Output von Person B hat Person A nicht geholfen weil Person A das schon hatte.


Ich will es mir mit niemand verderben aber auf sowas pfeife ich


----------



## SlaterB (6. Okt 2008)

dass dir drei erfahrenere Poster widersprechen und wahrscheinlich so ziemlich alle, die sich die Mühe machen würden, 
hat auf deine Einschätzung keinen Einfluss?


----------



## xdavidx (6. Okt 2008)

Marco hätte sich nicht einmischen müssen mit seiner Überheblichkeit.


----------



## Marco13 (6. Okt 2008)

_Marco hätte sich nicht einmischen müssen mit seiner Überheblichkeit._

Ich bin so toll, ich kann's mir erlauben, überheblich zu sein   

_Person B kommt daher nach dem Motto "Höhö ich kann das weil ich der beste bin aber wieso sollte ich es dir zeigen?"_

Ich gehe davon aus, dass das auf mich bezogen ist, und dass das eine bewußte Fehlinterpretation ist, mit der Absicht, mich als überheblich dastehen zu lassen (...) aber bevor ich mich im weiteren aus diesem Thread raushalte, noch die Anmerkung, dass es nicht darum ging, zu sagen, dass "ich das kann" (auch wenn es so ist) und nicht darum, dass ich der beste bin (auch wenn das so ist :wink: ) und auch nicht darum, dir eine funktionierende Lösung DEINES Problems vorzuenthalten, sondern darum, dir deutlich zu machen, dass du mit deiner Aussage "In meinem Code ist kein Fehler" mit an Sicherheit grenzender Wahrschreinlichkeit falsch lagst, und niemand dein Problem nachvollziehen (geschweige denn _lösen_) können wird, solange man nicht den Fehler in DEINEM Code suchen kann. Wenn du in deinem ersten Beitrag ein compilierbares Stück code gepostet hättest, wo das Problem nachvollziehbar auftritt, dann wäre der zweite Beitrag eine Lösung des Problems gewesen (zumindest, wenn er von mir gewesen wäre  ) und wir hätten uns den ganzen Scheiß-Thread hier gespart. 

http://www.java-forum.org/de/viewtopic.php?p=171842&highlight=#171842
http://www.tty1.net/smart-questions_de.html

So. Und jetzt probier' ich vielleicht doch mal das mit der Ignore-List aus....


----------

