Graf mit drawPolygon?

Status
Nicht offen für weitere Antworten.
S

Stefan244

Gast
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:

Code:
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

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

Vorher
Code:
    PaintPanel paintPanel = new PaintPanel();
    container.add(paintPanel);

Nachher
Code:
    PaintPanel paintPanel = new PaintPanel();
    JScrollPanel paintPanelScrollPane = new JScrollPane(paintPanel);
    container.add(paintPanelScrollPane);

.. und (WICHTIG: ) die PreferredSize anpassen, wenn neue Daten Vorliegen:
Code:
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 :D
 
S

Stefan244

Gast
Danke, erstmal für die rasche Antwort!

Das mit dem Scrollpanel habe ich eh schon eingefügt,
der Code
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


Code:
((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]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben