Inhoud van een Array vergroten of kleiner

Status
Niet open voor verdere reacties.

Seth001

Nieuwe gebruiker
Lid geworden
23 jan 2010
Berichten
4
Hallo,

Mijn vraag is het mogelijk om de inhoud van een array groter of kleiner te maken?

Voorbeeld ik gebruik nu:
Code:
  int xPositie[] = {0 + bigger,3 + bigger,12 + bigger,5 + bigger,8 + bigger,0 + bigger,-8 + bigger,-5 + bigger,-12 + bigger,-3 + bigger};
  int yPositie[] = {-13+ bigger,-4 + bigger,-4 + bigger,2 + bigger,11 + bigger,5 + bigger,11 + bigger,2 + bigger,-4 + bigger,-4 + bigger};

Om een ster te tekenen, alleen nu moet ik mijn ster groter maken als ik mijn scroller gebruik:
Code:
public void mouseWheelMoved( MouseWheelEvent e )
	{
	  	yellowStar.evolueer();
	  	redStar.evolueer();
	  	repaint();
	  	System.out.println(bigger);
	}

Ik heb geen idee hoe ik dit voor elkaar moet krijgen.
Hier is mijn code.
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;

public class Sterrenhemel extends JPanel implements MouseWheelListener
{
  private Ster yellowStar;
  private RodeSter redStar;
  private int bigger;
  Ster[] sterren = new Ster[100];
  private int red = 200;
  int xPositie[] = {0 + bigger,3 + bigger,12 + bigger,5 + bigger,8 + bigger,0 + bigger,-8 + bigger,-5 + bigger,-12 + bigger,-3 + bigger};
  int yPositie[] = {-13+ bigger,-4 + bigger,-4 + bigger,2 + bigger,11 + bigger,5 + bigger,11 + bigger,2 + bigger,-4 + bigger,-4 + bigger};
  
  
  public Sterrenhemel()
  {
	  yellowStar = new Ster( xPositie , yPositie, 10, Color.yellow );
	  redStar = new RodeSter( xPositie, yPositie, 10, new Color(red,0,0) );
	  addMouseWheelListener(this);
	  setFocusable(true);
	  requestFocus();
  }
  
  public void paintComponent( Graphics g )
  {
    super.paintComponent( g );
    setBackground(Color.blue);
    for(int i = 0; i < sterren.length; i++)
    {
    	if(i < 50)
    	{
    		yellowStar.teken( g );
    	}
    	else
    	{
    		redStar.teken( g );
    	}
    }
  }
  
  public void mouseWheelMoved( MouseWheelEvent e )
	{
	  for(int i = 0; i < sterren.length; i++)
	  {
		  yellowStar.evolueer();
		  redStar.evolueer();
	  }
	  	repaint();
	}
}
Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Polygon;
import java.util.Random;

public class Ster
{
	private int[]x = new int[10];
	private int[]y = new int[10];
	private int grootte;
	private int bigger;
	protected Color kleur; 
	
  
  public Ster( int[]x, int[]y, int grootte, Color kleur )
  {
    this.x = x;
    this.y = y;
    this.grootte = grootte;
    this.kleur = kleur;
  }

  public void teken( Graphics g ) 
  {
	Random generator = new Random();
	int Width = generator.nextInt(900);
	int Height = generator.nextInt(500);
	Polygon mytri = new Polygon(x,y,grootte);
	g.setColor( kleur );
    mytri.translate(Width, Height);
	g.fillPolygon(mytri);
    mytri.translate(-Width, -Height);
  }
  
  public void evolueer()
	{
	}
	
}
 
Laatst bewerkt:
Je kan een waarde in een array aanpassen door de positie van de array aan te roepen.
Dan kan je doen op de volgende manier:

Code:
int[] integerArray = {0,3,12,5,8,0,-8,-5,-12,-3};

private void pasArrayAan(waarde){

int[0] = int[0] + waarde; 
int[1] = int[1] + waarde;
...enz

}
 
met een ArrayList hoef je de grootte niet vast te stellen en kan je met de add functie toevoegen wat je wilt
 
Voor een ster groter of kleiner te maken heb je niet meer of minder punten nodig enkel je punten moeten wijzigen, maar als antwoord op je vraag: Om een array te vergroten of verkleinen maak je een nieuwe array aan met de juiste grootte en vult deze met de gegevens die er in moeten zitten en stel je je oorspronkelijke array gelijk aan je nieuwe. Maar om deze omslachtige omzetting te vermijden wordt er inderdaad gebruik gemaakt van java.util.ArrayList.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan