[JaVa] Nieuw item in lijst.

Pagina: 1
Acties:

  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Hoi ik ben een programmaatje aan het maken. het bestaat uit een lijst, textvak en een knop. Als je op de knop klikt komt er een item bij in de lijst. als je dan op het item klikt verschijnt het bericht wat bij het item hoort in de textbox.
Ik heb nu wel dat als je op een item klikt het bericht in de textbox verschijnt alleen lukt het me niet om te maken dat als je op een knop klikt er een item uit de array bij komt.

de code:

package email;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;


public class Applet1 extends Applet implements ItemListener {
public int aantal;
Button bericht;
private final int BREEDTE = 25;
private TextArea email;
private List lijst;
private int indexRij[];
private String [] kleurenRij = {
"Hoi wij hebben vernomen dat de daders zich in een land bevinden. oja wil je nog pizza",
"Snel de daders zijn gevlucht ze rijden nu door de chamonix tunnel richting het zuiden"
};

private String[] stringRij = {
"Hoofdcommisaris@hotmail.com - Spoed bericht","Hoofdcommisaris@hotmail.com - Nieuw bericht"};

public void init(){
aantal = 0;
bericht = new Button("Email ophalen");
bericht.setBounds(10,340,90,30);
add(bericht);

setLayout(null);

email = new TextArea("Hier komt uw nieuwe bericht");
email.setBounds(10,120,300,200);
add(email);

}

public void paint( Graphics g){
if(indexRij != null){
for(int i = 0; i < indexRij.length; i++){
email.setText(kleurenRij[indexRij[i]]);

}
}
}

public void itemStateChanged(ItemEvent e) {
indexRij = lijst.getSelectedIndexes();
repaint();
}

public boolean action(Event e, Object o)
{
if(e.target == bericht)
{
aantal++;
nieuwbericht();

return true;
}
return false;
}


void nieuwbericht()
{


lijst = new List( kleurenRij.length, false);

for(int i = 0; i < aantal; i++)
lijst.addItem(stringRij[i]);

lijst.addItemListener( this );
lijst.setBounds(10,10,300,100);
add( lijst );
}
}

---------------------------------
zoals je ziet word de variabele aantal verhoogd met 1 als je op de knop klikt. dan word de lijst gemaakt en de array kijkt eentje verder, alleen het werk niet :(

Verwijderd

1. Gebruik eens [ code] tags
2. Waarom maak je die lijst eigenlijk niet in de init
3. Je moet een ActionListener implementen en dan in je init
code:
1
bericht.addActionListener(this);

en dan ook nog
code:
1
2
3
4
public void actionPerformed(ActionEvent e)
{
 // bla bla
}

  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
for(int i = 0; i < aantal; i++)
lijst.addItem(stringRij[i]);

lijst.addItemListener( this );
lijst.setBounds(10,10,300,100);
add( lijst );

als ik aantal nou elke keer kan verhogen dan neemt ie gewoon steeds eentje meer uit de lijst alleen als ik maak dat als je op de knop klikt aantal 1 word verhoogd gebeurt er nix

  • Bernaar
  • Registratie: Juli 2001
  • Laatst online: 16-09 16:47
Ja, datzelfde probleem heb ik ook emke :)

Heeft iemand een oplossing!?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
bvwillig: Heeft iemand een oplossing!?
Controleren of je event-handling wel goed gaat :? Code posten, vertellen wat er mis gaat?

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Bernaar
  • Registratie: Juli 2001
  • Laatst online: 16-09 16:47
Ok hier komt ie nog een keer...
Het lijkt wel op hij gewoon die variabelen 'aantal' niet op wilt tellen...

Ik hoop dat iemand de coden wil runnen/bekijken en zeggen wat er nou mis is!!!


package email;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;


public class Applet1 extends Applet implements ItemListener {
public int aantal;
public int boe;
Button bericht;
private final int BREEDTE = 25;
private TextArea email;
private List lijst;
private int indexRij[];
private String [] kleurenRij = {
"Hoi wij hebben vernomen dat de daders zich in een land bevinden. oja wil je nog pizza",
"Snel de daders zijn gevlucht ze rijden nu door de chamonix tunnel richting het zuiden"
};

private String[] stringRij = {
"Hoofdcommisaris@hotmail.com - Spoed bericht","Hoofdcommisaris@hotmail.com - Nieuw bericht"};

public void init(){
aantal = -1;
bericht = new Button("Email ophalen");
bericht.setBounds(10,340,90,30);
add(bericht);

setLayout(null);

email = new TextArea("Hier komt uw nieuwe bericht");
email.setBounds(10,120,300,200);
add(email);

}

public void paint( Graphics g){
if(indexRij != null){
for(int i = 0; i < indexRij.length; i++){
email.setText(kleurenRij[indexRij[i]]);

}
}
}

public void itemStateChanged(ItemEvent e) {
indexRij = lijst.getSelectedIndexes();
repaint();
}

public boolean action(Event e, Object o)
{
if(e.target == bericht)
{
aantal++;

nieuwbericht();
return true;
}
return false;
}


void nieuwbericht()
{


lijst = new List( kleurenRij.length, false);

for(int i = 0; i <= aantal; i++)
lijst.addItem(stringRij[i]);

lijst.addItemListener( this );
lijst.setBounds(10,10,300,100);
add( lijst );
}
}



THNX!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik ga er pas naar kijken als je de event-handling om zet naar een ActionListener ;) . De compiler waarschuwt je wel voor alle deprecated stuff...

(Gebruik voortaan ff [ code] ... [ /code] om je code, dan ziet het er wat beter uit :) ).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Bernaar
  • Registratie: Juli 2001
  • Laatst online: 16-09 16:47
Ik snap het niet :( Ben maar 1e jaars met java :'(

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Deze manier van event afhandeling (met die action methode) is echt extreem antiek. Je kan de Java Tutorial raadplegen voor een betere aanpak:

http://java.sun.com/docs/books/tutorial/uiswing/events/index.html

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

De code tags worden gebruikt om je code wat overzichtelijker hier te posten, zoals jij het doet is het nl. ietwat (ernstig!) onleesbaar...

De ActionListener waar mbravenboer zo'n fan van is (and i don't blame him ;)), moet je maar eens opzoeken in de Java API documentatie op http://java.sun.com. Het is simpel gezegd een veel betere manier om de events in je programma af te handelen...

m.b.v. de code tags ziet je code er bijvoorbeeld zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
void nieuwbericht()
{
   lijst = new List( kleurenRij.length, false);

   for(int i = 0; i < aantal; i++)
    lijst.addItem(stringRij[i]);

   lijst.addItemListener( this );
   lijst.setBounds(10,10,300,100);
   add( lijst );
}

heel wat overzichtelijker, of niet?? :D

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • Bernaar
  • Registratie: Juli 2001
  • Laatst online: 16-09 16:47
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package email;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;


public class Applet1 extends Applet implements ItemListener {
public int aantal;
public int boe;
Button bericht;
private final int BREEDTE = 25;
private TextArea email;
private List lijst;
private int indexRij[];
private String [] kleurenRij = {
"Hoi wij hebben vernomen dat de daders zich in een land bevinden. oja wil je nog pizza",
"Snel de daders zijn gevlucht ze rijden nu door de chamonix tunnel richting het zuiden"
};

private String[] stringRij = {
"Hoofdcommisaris@hotmail.com - Spoed bericht","Hoofdcommisaris@hotmail.com - Nieuw bericht"};

public void init(){
aantal = -1;
bericht = new Button("Email ophalen");
bericht.setBounds(10,340,90,30);
add(bericht);

setLayout(null);

email = new TextArea("Hier komt uw nieuwe bericht");
email.setBounds(10,120,300,200);
add(email);

}

public void paint( Graphics g){
if(indexRij != null){
for(int i = 0; i < indexRij.length; i++){
email.setText(kleurenRij[indexRij[i]]);

}
}
}

public void itemStateChanged(ItemEvent e) {
indexRij = lijst.getSelectedIndexes();
repaint();
}

public boolean action(Event e, Object o)
{
if(e.target == bericht)
{
aantal++;

nieuwbericht();
return true;
}
return false;
}


void nieuwbericht()
{


lijst = new List( kleurenRij.length, false);

for(int i = 0; i <= aantal; i++)
lijst.addItem(stringRij[i]);

lijst.addItemListener( this );
lijst.setBounds(10,10,300,100);
add( lijst );
}
}

Help plz... Dat veranderen van Bolean dat heb ik nog niet geleerd :'(

Dus weet iemand een oplossing!?

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

behalve het tussen code tags plaatsen van je code zou je misschien ook nog ff spaties of tabs kunnen gebruiken om de niveaus in je code ff goed aan te geven? zie mijn voorbeeld van een stukje van jouw code...

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!

Pagina: 1