# Graf mit drawPolygon?



## Stefan244 (5. Mrz 2008)

Hallo,

Versuche einen Graph mit draw Polygon zu zeichnen,
Anfang funktioniert schon jedoch nur bis zum Ende des Panels, dann verschwindet der Graph im Nichts!
Wie kann ich einen Balken einfügen damit der weiterscrollt?
Meine jetztigen Programmierung:


```
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;

public class PaintPanel extends JPanel
{
    private Dimension groesse;
    Dimension dim = new Dimension(150,150);
    int xWerte[]=new int[10000]; 
    int yWerte[]=new int[10000];
    int length=0; 
            
    public void paint(Graphics g)
    {

        
      super.paint(g);
      Graphics2D g2=(Graphics2D)g;
      g2.scale(1,1);
      g2.setColor(Color.PINK);
      g2.drawPolyline(xWerte, yWerte,length);
      
      
    }
    public void setStatus(int intervall,Motoren motoren)
    {
        
        xWerte[0]=0;

        for (int i = 0; i < motoren.getSize(); i++) 
        {
         
            yWerte[i]=((int)(motoren.getMotor(i).getVerhaeltnis()*450));
            if(i>0)
                xWerte[i]=(xWerte[i-1]+intervall*100);
            
     
        }    
      length = motoren.getSize();
      repaint();
    }

   // Damit Fenster (GUI) gscheit groß dargestellt wird
  @Override
  public Dimension getMinimumSize()
  {
    return dim;
  }
  @Override
  public Dimension getPreferredSize()
  {
    return dim;
  }

 
     
}
```



Motoren ist nur eine Kollektion Klasse und vom Objetkt Motor kommen nur die Werte.
mit SetStatus wird der Graf immer aktuallisiert!

Bitte um Hilfe!
mfg stefan


----------



## Marco13 (5. Mrz 2008)

Dazu musst du das Panel in eine ScrollPane packen...

Vorher

```
PaintPanel paintPanel = new PaintPanel();
    container.add(paintPanel);
```

Nachher

```
PaintPanel paintPanel = new PaintPanel();
    JScrollPanel paintPanelScrollPane = new JScrollPane(paintPanel);
    container.add(paintPanelScrollPane);
```

.. und (WICHTIG: ) die PreferredSize anpassen, wenn neue Daten Vorliegen:

```
public void setStatus(int intervall,Motoren motoren)
{
    int preferredWidth = rechneAusWieBreitEsSeinMussUmAllesDarzustellen();
    setPreferredSize(new Dimension(preferredWidth, 150));
}
```

Wenn die preferredWidth größer wird, als der Verfügbare Platz, erscheint eine Scrollbar und das ganze wird scrollbar


----------



## 0x7F800000 (6. Mrz 2008)

Graph Dracula...


----------



## Stefan244 (6. Mrz 2008)

Danke, erstmal für die rasche Antwort!

Das mit dem Scrollpanel habe ich eh schon eingefügt, 
der Code 

```
PaintPanel paintPanel = new PaintPanel();
 JScrollPanel paintPanelScrollPane = new JScrollPane(paintPanel);
 container.add(paintPanelScrollPane);
```
ist der, der automatisch generirt wird oder?


das Problem Ich habe beim panel in der Gui wo der Graph sein soll nur im CustomCreation Code ein new PaintPanel();

und rufe zur Aktualisierung immer nur 



```
((PaintPanel)paGraph).setStatus((int)intervall,motoren);
```

auf.  Kann ich das mit public Dimension getMinimumSize() und public Dimension getPreferredSize() so lassen, oder muss ich die jetzt weglöschen?
mfg

[/code]


----------

