[JAVA] Genereren van Java code

Pagina: 1
Acties:

  • bdu
  • Registratie: Februari 2002
  • Laatst online: 01-12 17:57
Beste Tweakers,

Ik heb geen idee of het kan wat ik doe en wil maar ik wilde het even aan jullie voorleggen. Ik wil eerst wel even de aantekening maken dat ik niet zo een heel erge kei ben ik java.

Het gaat om het volgende:

Ik wil een directory uitlezen, in deze directory staan allemaal jpg files. Deze wil ik dan weergeven op een grid. Het uitlezen van de directory is gelukt, het tonen op een gird ook. Alleen deze combinatie nog niet echt.

Wat ik doe is het volgende:

Ik ga dmv een loop door de directory en er wordt vervolgens een Array gevuld met alle bestandsnamen. De foto's toon ik in een grid door gebruik te maken van Labels met Icon en deze in een GridLayout weer te geven:
Java:
1
jLabel2.setIcon(new ImageIcon("plaatje.jpg"));


Nu wil dmv het doorlopen/loopen van de array dat deze regel 'automatisch' gegenereerd wordt. Dit heb ik nu tot dusverre dat er een line wordt geprint in de console, dmv System.out.println() ,maar ik wil dat er gewoon een label met icon wordt weergegeven :'(

Mijn code:

Mijn dir loop, zoekt alle jpg bestanden en plaatst deze in een Array
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  public String[] readDirectory(String dirName)
        {
            File dir = new File(dirName);

            String[] children = dir.list();
            if (children == null) {
                // Either dir does not exist or is not a directory
            }
            // It is also possible to filter the list of returned files.
            // This example does not return any files that start with `.'.
            FilenameFilter filter = new FilenameFilter() {
                public boolean accept(File dir, String name) {
                    String lname = name.toLowerCase();
                    return lname.endsWith(".jpg");
                }
            };

            children = dir.list(filter);
            return children;
        }


En mijn loop dit door de array gaat:
Java:
1
2
3
4
5
6
7
8
9
  for(int i = 0000; i < afbeeldingen.length; i++ ) {

// hier print ie dus een x aantal regels gelijk aan het aantal afbeeldingen
System.out.println("jLabel" + i + ".setIcon(new ImageIcon(" + "'/fototst/" + afbeeldingen[i] +"')");

//hier print ie alleen de laatste uit de Array
jLabel1.setIcon(new ImageIcon("/fototst/" + afbeeldingen[i]));

   }


In de console doet ie het dus prima alleen in mij GUI niet :/ daar geeft ie alleen de laatste weer als het ware.

Kan dit wel wat ik wil, hoe moet ik het aanpakken, ik PHP zou het me wel lukken maar dit is wat lastiger.

  • cspare
  • Registratie: Oktober 2006
  • Laatst online: 29-07 22:19

cspare

What the deuce?!

Als je een array maakt met al je jLabels, kan je ook met behulp van je for lus de juiste label gebruiken.
Iets in de geest van jLabels[i].setIcon() krijg je dan.

The one who says it cannot be done, should never interrupt the one who is doing it.


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 01-12 20:19

Gerco

Professional Newbie

Gebruik een array van jLabels en doe als volgt:
Java:
1
2
3
4
5
6
7
  JLabel[] jLabelArray = new JLabel[afbeeldingen.length];

  for(int i = 0; i < afbeeldingen.length; i++) {
    jLabelArray[i] = new JLabel();
    ... zet jLabelArray[i] op de goede plaats ...
    jLabelArray[i].setIcon(new ImageIcon("/fototst/" + afbeeldingen[i]));
  }

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Marcj
  • Registratie: November 2000
  • Laatst online: 01-12 16:59
Je plaatst nu de icon steeds op hetzelfde label zover ik kan zien. Dan overschrijf je steeds de vorige en blijft dus alleen de allerlaatste staan. Je zult dus een grid moeten maken en dan de plaatjes daar stuk voor stuk op een andere plek plaatsen.

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 05-11 19:33
Je moet ook per afbeelding een nieuw JLabel object maken, waaraan je dan een nieuwe ImageIcon toevoegt. Deze JLabel voeg je dan aan het grid toe.

edit:
laat...

[ Voor 7% gewijzigd door Michali op 20-04-2007 10:59 ]

Noushka's Magnificent Dream | Unity


  • bdu
  • Registratie: Februari 2002
  • Laatst online: 01-12 17:57
Okee tot dusver heel erg bedankt. Ik had idd al in de gaten dat ik elke keer een ander label moest aanmaken. Nog steeds werkt het niet helemaal, ik krijg de volgende fout :'(

code:
1
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=null,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,defaultIcon=D:/0607 - Informatie Visualisatie/fototst/image0010.jpg,disabledIcon=,horizontalAlignment=,horizontalTextPosition=,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER]

:?

  • bdu
  • Registratie: Februari 2002
  • Laatst online: 01-12 17:57
Opgelost, stond nog iets dubbel in! Bedankt allen! * bdu is happy :D

  • Marcj
  • Registratie: November 2000
  • Laatst online: 01-12 16:59
Dat is geen foutmelding, maar gewoon de toString() functie van de JLabel. Wat heb je gedaan en welke exceptie (of compile-fout) krijg je?
Pagina: 1