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){ }
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
Husker hvor langt du er kommet sidste gang nogen trykkede på knappen. Altså du skal gemme positionen i dit array.
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.
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.
mots skal ud i MyFrame for at actionPerformed kender mots.length
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; } } }
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(); } } }
Jeg har ladet actionPerformed bruge BonMot change og så har jeg addet action listener.
PS: Put noget til at lukke vinduet højt på prioriterings-listen for forbedringer.
12. juni 2003 - 10:19
#10
Tak for hjælpen. Jeg sørger for at tilføje metoden til at lukke vinduet!
Kurser inden for grundlæggende programmering