[JAVA] Probleem met weergeven info uit arraylist

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

  • MiKeZZa
  • Registratie: December 2004
  • Laatst online: 20:30
Hallo,

Ik ben een beginner met Java (ik weet echt nog maar heel weinig) maar nu wil ik graag wat dingen in een arraylist stoppen en dat is met de nodige moeite gelukt.

Maar nu wil ik dit weergeven.

Nu doe ik dat op deze manier:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void paint (Graphics g)
    {
        for (int i =0; i < afspraken.size(); i++)
        {
            afspraak = (Afspraak)afspraken.get(i);
            afspraken.get(i);
            int x = 20;
            int y = stepSize * i + startY;
            if (i == indexSelected && itemSelected)
                afspraak.display(g, x, y, true);
            else
                afspraak.display(g, x, y, false);
        }
    }


Maar dat geeft een vierkantje met daarin tekst, als deze tekst te lang is wordt de tekst gewoon doorgeschreven en loopt hij het vierkantje uit. Daarnaast wordt een regel die te lang is niet afgebroken als de breedte van de applet bereikt is (die is 700 pixels) maar loopt de text gewoon door en wordt dus onzichtbaar.

Ik heb al geprobeerd om iets te maken met println en drawstring maar dit lukt mij niet. Misschien doe ik iets verkeerd maar ik heb echt te weinig kennis van Java om te merken wat ik verkeerd doe. Dus ik hoop dat er iemand is die mij even op de goede weg kan helpen.

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06 16:43

Varienaja

Wie dit leest is gek.

Je gebruikt de nieuwste spullen (Java5), neem ik aan? Dan moet je je forloop zo doen, dat is mooier compact:

code:
1
2
3
4
5
6
   List<Afspraak> afspraken = new ArrayList<Afspraken>();
   ...

   for (Afspraak afspraak : afspraken) {
      ...
   }


Verder zie ik niets wat met die 700 pixels te maken heeft of iets dergelijks. En ik zie ook niet wat afspraak.display() precies doet, daar zit 'm het cruciale in vermoed ik.

Siditamentis astuentis pactum.


  • MiKeZZa
  • Registratie: December 2004
  • Laatst online: 20:30
Varienaja schreef op vrijdag 03 november 2006 @ 12:30:
Je gebruikt de nieuwste spullen (Java5), neem ik aan? Dan moet je je forloop zo doen, dat is mooier compact:

code:
1
2
3
4
5
6
   List<Afspraak> afspraken = new ArrayList<Afspraken>();
   ...

   for (Afspraak afspraak : afspraken) {
      ...
   }


Verder zie ik niets wat met die 700 pixels te maken heeft of iets dergelijks. En ik zie ook niet wat afspraak.display() precies doet, daar zit 'm het cruciale in vermoed ik.
Ik heb eerlijk gezegd geen idee welke java versie ik gebruik!

Ik roep deze applet aan dmv een HTML file die de breedte van 700 pixels aangeeft.

Ik mag helaas niet de hele code hier neerpleuren omdat ze dan denken dat ik hoop dat iemand het even oplost voor mij......

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20:39

TeeDee

CQB 241

Zit er in het Graphics object geen Measurestring of iets dergelijks?
Dan kan je meten hoelang het e.e.a. zou worden, en desgewenst handelen.

[ Voor 34% gewijzigd door TeeDee op 03-11-2006 12:56 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • MetroidPrime
  • Registratie: Oktober 2003
  • Laatst online: 01-11 10:08

MetroidPrime

Turn it up loud, captain!

Je zult zelf in Afspraak.draw() moeten gaan kijken of alles wel op een regel past. Je kunt de beschikbare breedte opvragen met behulp van de getWidth() methode die geërfd wordt van de Applet class. Je zult zelf moeten uitrekenen hoe groot wat je op het scherm tekent is, maar er zijn hulpmethoden om bijvoorbeeld de breedte van een String uit te rekenen.

Wat probeer je eigenlijk weer te geven? Als je alleen maar een lijstje met afspraken weer geeft, dan is het misschien beter om UI componenten te gaan gebruiken in plaats van het wiel opnieuw uit te vinden en alles zelf te gaan renderen.

"Some girl on the street outside the bar just asked me if I was saved yet." "Yeah? What did you say?" "I told her 'I saved at the checkpoint a couple of minutes back and I can reload from there if I die.'


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 21-11 11:06

Macros

I'm watching...

Als je eerst uitlegt wat je wilt doen. Het is niet de bedoeling om zomaar tekst te printen dmv de paint methode behalve in speciale gevallen zoals spelletjes. Als je een lijst wilt laten zien, kijk dan eens naar JList van Swing, dan krijg je een mooie lijst zoals je in Windows gewent bent.

"Beauty is the ultimate defence against complexity." David Gelernter


  • MiKeZZa
  • Registratie: December 2004
  • Laatst online: 20:30
Ik wil inderdaad slechts een rijtje afspraken weer geven.

Ik ben ook zeer blij dat jullie mij willen helpen maar dingen als Measurestring en UI componenten zeggen mij helemaal niets. Ik was al dolgelukkig dat ik na het boek over BlueJ dit al kon maken :?

  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10 14:25
MiKeZZa schreef op vrijdag 03 november 2006 @ 13:10:
Ik wil inderdaad slechts een rijtje afspraken weer geven.

Ik ben ook zeer blij dat jullie mij willen helpen maar dingen als Measurestring en UI componenten zeggen mij helemaal niets. Ik was al dolgelukkig dat ik na het boek over BlueJ dit al kon maken :?
Als je totaal niets weet van UI componenten moet je daar toch eerst meer informatie over gaan zoeken...

Je kan naast een list ook eventueel gebruik maken van een textarea

  • MetroidPrime
  • Registratie: Oktober 2003
  • Laatst online: 01-11 10:08

MetroidPrime

Turn it up loud, captain!

MiKeZZa schreef op vrijdag 03 november 2006 @ 13:10:
Ik wil inderdaad slechts een rijtje afspraken weer geven.

Ik ben ook zeer blij dat jullie mij willen helpen maar dingen als Measurestring en UI componenten zeggen mij helemaal niets. Ik was al dolgelukkig dat ik na het boek over BlueJ dit al kon maken :?
Voor UI componenten kun je het beste even de Swing tutorial van Sun gaan doornemen.

"Some girl on the street outside the bar just asked me if I was saved yet." "Yeah? What did you say?" "I told her 'I saved at the checkpoint a couple of minutes back and I can reload from there if I die.'


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:25

Janoz

Moderator Devschuur®

!litemod

Je probleem, het niet goed renderen van de tekst, wordt niet door de code die je hier hebt staan veroorzaakt. De manier van afdrukken van een afspraak staat in display methode in het object Afspraak. Dat is de plek waar je dit probleem op moet lossen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Swinnio
  • Registratie: Maart 2001
  • Laatst online: 01-12 12:05
Wellicht ten overvloede: regel 6 kun je ook weglaten :)

If the world wouldn't suck, we'd all fall off


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Varienaja schreef op vrijdag 03 november 2006 @ 12:30:
Dan moet je je forloop zo doen, dat is mooier compact:
offtopic:
'moet', op basis van twee gevoelsargument?

Wie trösten wir uns, die Mörder aller Mörder?


  • MiKeZZa
  • Registratie: December 2004
  • Laatst online: 20:30
Ik zal er eens goed naar gaan kijken want dit gaat mij flink boven de pet maar ik ga mijn best doen. Bedankt in ieder geval voor alle moeite :)

  • ravenger
  • Registratie: Juli 2001
  • Laatst online: 01-12 09:16
Varienaja schreef op vrijdag 03 november 2006 @ 12:30:
Je gebruikt de nieuwste spullen (Java5), neem ik aan? Dan moet je je forloop zo doen, dat is mooier compact:

code:
1
2
3
4
5
6
   List<Afspraak> afspraken = new ArrayList<Afspraken>();
   ...

   for (Afspraak afspraak : afspraken) {
      ...
   }


Verder zie ik niets wat met die 700 pixels te maken heeft of iets dergelijks. En ik zie ook niet wat afspraak.display() precies doet, daar zit 'm het cruciale in vermoed ik.
offtopic:
hmm ik ken die syntax niet eens 8)7, moet niets dus en het is misschien wel compact maar niet echt leesbaar.

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

ravenger schreef op vrijdag 03 november 2006 @ 15:05:
Java:
1
2
3
4
5
6
List<Afspraak> afspraken = new ArrayList<Afspraken>();
   ...

   for (Afspraak afspraak : afspraken) {
      ...
   }


offtopic:
hmm ik ken die syntax niet eens 8)7, moet niets dus en het is misschien wel compact maar niet echt leesbaar.
offtopic:
Verdiep je er dan toch maar eens in! >:) Generics <Afspraak> zorgen ervoor dat je in dit geval alleen iets met type Afspraak in de ArrayList kan proppen, dat scheelt je veel typecasting zoals je in de for lus kan zien.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • jAnO!
  • Registratie: Januari 2002
  • Laatst online: 28-01 13:12

jAnO!

lalalavanillevla

ravenger schreef op vrijdag 03 november 2006 @ 15:05:
[...]

offtopic:
hmm ik ken die syntax niet eens 8)7, moet niets dus en het is misschien wel compact maar niet echt leesbaar.
Persoonlijk werk ik al een tijd met 1.5 en ik vind de syntax veel duidelijker, is misschien even wennen.
Als ik nu voor een project terugmoet naar 1.4 baal ik, dat gekloot met iterators etc. is niet meer nodig nu (wat betreft de for lus). Om maar te zwijgen over de zegens van generics, mits al je code in 1.5 is zijn classcast exceptions sporadisch.

When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:25

Janoz

Moderator Devschuur®

!litemod

* Janoz sluit zich bij jAnO! aan. Ook ik vind de nieuwe foreach achtige notatie een uitkomst. En ook het generics gebeuren was duidelijk een gebrek in vroegere versies.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

zwippie schreef op vrijdag 03 november 2006 @ 15:14:
offtopic:
Verdiep je er dan toch maar eens in! >:) Generics <Afspraak> zorgen ervoor dat je in dit geval alleen iets met type Afspraak in de ArrayList kan proppen, dat scheelt je veel typecasting zoals je in de for lus kan zien.
offtopic:
wedduh dat ik er ook iets van een ander (niet afgeleid) type in kan proppen >:)

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Verwijderd schreef op vrijdag 03 november 2006 @ 15:54:
[...]
offtopic:
wedduh dat ik er ook iets van een ander (niet afgeleid) type in kan proppen >:)
offtopic:
Kom maar op de proppen ermee! :p

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • jAnO!
  • Registratie: Januari 2002
  • Laatst online: 28-01 13:12

jAnO!

lalalavanillevla

Verwijderd schreef op vrijdag 03 november 2006 @ 15:54:
[...]
offtopic:
wedduh dat ik er ook iets van een ander (niet afgeleid) type in kan proppen >:)
Ja das een beetje de mits, gelukkig krijg je van de compiler wel warnings.....
Maar jij doelt dus op:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.*;
public class TestBadLegacy {
  public static void main(String[] args) {
    List<Integer> myList = new ArrayList<Integer>();
      myList.add(4);
      myList.add(6);
      Inserter in = new Inserter();
      in.insert(myList); // pass List<Integer> to legacy code
 }
}
class Inserter {
  // method with a non-generic List argument
  void insert(List list) {
    list.add(new Object()); //perfect legaal verder.
  }
}

When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.


Verwijderd

jAnO! schreef op vrijdag 03 november 2006 @ 16:22:
Ja das een beetje de mits, gelukkig krijg je van de compiler wel warnings.....
Maar jij doelt dus op:[..]
Bijvoorbeeld, maar in zijn algemene zin meer op dit:
Behind the Scenes
Generics are implemented by the Java compiler as a front-end conversion called erasure, which is the process of translating or rewriting code that uses generics into non-generic code (that is, maps the new syntax to the current JVM specification). In other words, this conversion erases all generic type information; all information between angle brackets is erased. For example, LinkedList<Integer> will become LinkedList. Uses of other type variables are replaced by the upper bound of the type variable (for example, Object), and when the resulting code is not type correct, a cast to the appropriate type is inserted.
Pagina: 1