Gå til innhold

Hvorfor fortsetter løkka å gå når jeg resizer framen?


Anbefalte innlegg

Ok, jeg fant ikke ut hvorfor problemet som jeg skrev her oppstod. men jeg har funnet selve problemet et annet sted og kjører med en mindre kode her. kanskje folk gidder å svare mer =P hehe. problemet er at når jeg resizer framen så fortsetter "i" å vokse og grafen forflytter seg bortover og det legger til seg flere tall + at jeg ikke kan bruke annen layout en gridlayout og da viser den ikke hele grafen... hvorfor gjør den det???

 

rnd er bare en annen klasse som jeg importerer random fra.

 

package oblig12009;

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;


public class Tegning extends JPanel {

rnd r = new rnd();
int k = 0;

public int tallrekke()
{
	return tallrekke();
}

 public void paintComponent(Graphics g) {
super.paintComponent(g);
r.nd();
	for(int i= 0; i < knappene.tallrekke.length;i++)
	{
		g.drawRect(k, 300-knappene.tallrekke[i], 10, knappene.tallrekke[i]);
		g.fillRect(k, 300-knappene.tallrekke[i], 10, knappene.tallrekke[i]);
		k= k+20;
		System.out.println(knappene.tallrekke[i]);
	}

}
 }

Endret av Z_AGo
Lenke til kommentar
Videoannonse
Annonse

(1) Fjern pack()

(2) Sett fornuftig lokasjon og størrelse på textArea ved å kalle scrollPane.setBounds(...)

(3) Legg til validate() på slutten av print()

 

Det vil ihvertfall være en start; altså ikke en løsning på alle problemer.

 

 

En garantert korrekt og fullstending utredning på hvorfor dette funker (bedre) klarer jeg ikke frembringe på strak arm, og føler ikke for å lete i dokumentasjonen ;). Men du kan få noen kvalifiserte gjetninger. "Krympingen" kan være et resultat av mangelen på en layout manager når pack() kalles, og textArea vises ikke fordi du ikke hadde satt lokasjon og størrelse på scrollpane-en eksplisitt (noe jeg tror du må med "null layout").

 

Jeg vil sterkt anbefale at du oppretter og legger til textarea og scrollpane en gang (før hele brukergrensesnittet vises på skjermen), ikke hver gang bruker klikker på en knapp. Det er best om du slipper å eksplisitt kalle validate(), revalidate(), repaint() o.l. - du skal tross alt bare legge til eller fjerne noe tekst.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...