Avatar billede apa Nybegynder
11. juni 2003 - 22:40 Der er 9 kommentarer og
1 løsning

Tilføje teks til Frame fra array!

Nedenstående kode er et uddrag fra en opgave. Er der én der kan fortælle mig hvordan jeg får "changeButton" til at gå til den næste teksstreng i arrayet??


class MyFrame extends Frame {
private BonMot bonMot = new BonMot();
private Button changeButton = new Button("Change");

class BonMot extends Canvas {
   
    privat String[] mots = {
        "Get up early",
        "Keep trying",
        "Save your dollars",
        "Never say never"
    };

public void actionPerformed(ActionEvent e){
   
}
Avatar billede disky Nybegynder
11. juni 2003 - 22:45 #1
Husker hvor langt du er kommet sidste gang nogen trykkede på knappen.

Altså du skal gemme positionen i dit array.
Avatar billede arne_v Ekspert
11. juni 2003 - 22:45 #2
Noget med en pegepind:

private int ix = 0;

som bliver talt op i actionPerformed:

ix = (ix + 1) % mots.length;

så vil mots[ix] blive talt op ved hvert klik.
Avatar billede arne_v Ekspert
11. juni 2003 - 22:52 #3
svar
Avatar billede apa Nybegynder
11. juni 2003 - 23:00 #4
Hvis jeg skriver:
    public void actionPerformed(ActionEvent e){
   
        if (e.getSource() == changeButton){
        ix = (ix + 1) % mots.length;
        }
   
    }
}

...og har tilføjet private int ix = 0; som klassevariabel får jeg følgende fejl: (med pil under mots)


symbol  : variable mots 
location: class MyFrame
        ix = (ix + 1) % mots.length;                                ^
1 error
Process completed.
Avatar billede arne_v Ekspert
11. juni 2003 - 23:03 #5
mots skal ud i MyFrame for at actionPerformed kender
mots.length
Avatar billede apa Nybegynder
11. juni 2003 - 23:09 #6
Jeg er nød til at løbe - vender tilbage i morgen - tak indtil videre! Hele programmer ser ud som følgende:

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

public class Q6 {
   
    public static void main(String[] args) {
        new MyFrame();
    }
}

class MyFrame extends Frame implements ActionListener {

    private BonMot bonMot = new BonMot();
    private Button changeButton = new Button("Change");
    private int ix = 0;

    public MyFrame() {
        super("Bon Mots");
        setBounds(100, 100, 200, 100);
        add(bonMot, "Center");
        add(changeButton, "South");
        setVisible(true);
    }


class BonMot extends Canvas {
   
    private String[] mots = {
        "Get up early",
        "Keep trying",
        "Save your dollars",
        "Never say never"
    };

    int current = 0 ;
   
    public void paint(Graphics g) {
        g.drawString(mots[current], 20, 30);
    }
   
    public void change() {
        current = (++current%mots.length);
        repaint();
    }

    }
   
    public void actionPerformed(ActionEvent e){
   
        if (e.getSource() == changeButton){
        ix = (ix + 1) % mots.length;
        }
   
    }
}
Avatar billede arne_v Ekspert
12. juni 2003 - 08:05 #7
Den her version virker:

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

public class Q6 {

    public static void main(String[] args) {
        new MyFrame();
    }
}

class MyFrame extends Frame implements ActionListener {

    private BonMot bonMot = new BonMot();
    private Button changeButton = new Button("Change");

    public MyFrame() {
        super("Bon Mots");
        setBounds(100, 100, 200, 100);
        add(bonMot, "Center");
        add(changeButton, "South");
        changeButton.addActionListener(this);
        setVisible(true);
    }

    class BonMot extends Canvas {

        private String[] mots = {
                "Get up early",
                "Keep trying",
                "Save your dollars",
                "Never say never" };

        private int current = 0;

        public void paint(Graphics g) {
            g.drawString(mots[current], 20, 30);
        }

        public void change() {
            current = (current + 1) % mots.length;
            repaint();
        }

    }

    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == changeButton) {
            bonMot.change();
        }

    }
}
Avatar billede arne_v Ekspert
12. juni 2003 - 08:05 #8
Jeg har ladet actionPerformed bruge BonMot change og så har jeg addet
action listener.
Avatar billede arne_v Ekspert
12. juni 2003 - 08:06 #9
PS: Put noget til at lukke vinduet højt på prioriterings-listen for
    forbedringer.
Avatar billede apa Nybegynder
12. juni 2003 - 10:19 #10
Tak for hjælpen. Jeg sørger for at tilføje metoden til at lukke vinduet!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester