Avatar billede Slettet bruger
10. marts 2005 - 18:45 Der er 35 kommentarer og
1 løsning

Hjælp til skole opgave

Hej

Jeg skal lave et program i java som memory eller hva det nu hedder. Jeg har lavet alle billederne og skal i gang med at finde en metode så man kan klikke på et billede og derefter skifter det til et andet billede det skal efter 3 sec skifte tilbage igen. Nogen der kan hjælpe mig med det. Min kode ser således ud endtil vidre:

import java.awt.*;
import java.awt.event.*;
/**
* Write a description of class Grafik here.
*
* @author (Lehto)
* @version (1.0)
*/
public class Grafik extends Frame
{
  public void paint(Graphics g)
  {
    // Herunder referer g til et Graphics-objekt man kan tegne med
    int størrelse = 20; // Her ændre jeg skrift størrelsen
    Font skrifttype = new Font("Verdana", Font.ITALIC, størrelse);
    g.setFont(skrifttype);
     
    g.setColor(Color.blue);
    g.drawString("Velkommen til find et par bryster",this.getSize().width/2-130,50); 
    g.setColor(Color.blue);
   
    Image pic = Toolkit.getDefaultToolkit().getImage("pic.JPG");
    Image pic2 = Toolkit.getDefaultToolkit().getImage("pic2.JPG");
   
    g.drawImage(pic, 100, 100, this);
    g.drawRect(100, 100, 130, 130);
   
    g.drawImage(pic2, 230, 100, this);
    g.drawRect(230, 100, 130, 130);
   
    g.drawImage(pic, 360, 100, this);
    g.drawRect(360, 100, 130, 130);
   
    g.drawImage(pic, 490, 100, this);
    g.drawRect(490, 100, 130, 130);
   
    g.drawImage(pic, 620, 100, this);
    g.drawRect(620, 100, 130, 130); //Her slutter de føreste rækkerne vandret
   
    g.drawImage(pic, 100, 230, this);
    g.drawRect(100, 230, 130, 130);
   
    g.drawImage(pic2, 230, 230, this);
    g.drawRect(230, 230, 130, 130);
   
    g.drawImage(pic, 360, 230, this);
    g.drawRect(360, 230, 130, 130);
   
    g.drawImage(pic, 490, 230, this);
    g.drawRect(490, 230, 130, 130);
   
    g.drawImage(pic, 620, 230, this);
    g.drawRect(620, 230, 130, 130); //her slutter anden række vandret
   
    g.drawImage(pic, 100, 360, this);
    g.drawRect(100, 360, 130, 130);
   
    g.drawImage(pic, 230, 360, this);
    g.drawRect(230, 360, 130, 130);
   
    g.drawImage(pic, 360, 360, this);
    g.drawRect(360, 360, 130, 130);
   
    g.drawImage(pic, 490, 360, this);
    g.drawRect(490, 360, 130, 130);
   
    g.drawImage(pic, 620, 360, this);
    g.drawRect(620, 360, 130, 130); //Her slutter 3 række vandret
   
    g.drawImage(pic, 100, 490, this);
    g.drawRect(100, 490, 130, 130);
   
    g.drawImage(pic, 230, 490, this);
    g.drawRect(230, 490, 130, 130);
   
    g.drawImage(pic, 360, 490, this);
    g.drawRect(360, 490, 130, 130);
   
    g.drawImage(pic, 490, 490, this);
    g.drawRect(490, 490, 130, 130);
   
    g.drawImage(pic, 620, 490, this);
    g.drawRect(620, 490, 130, 130); //her slutter 4 række vandret

  }
 
 
 
 
  public static void main(String[] arg)
  {
    Grafik vindue = new Grafik();  // opret vinduet
    vindue.setSize(1000,1000);                      // sæt vinduets størrelse
    vindue.setTitle("Gæt et bryst");            // sæt vinduets titel
    vindue.setVisible(true);                      // åbn vinduet
    vindue.setBackground(Color.red);                  //Sætter bagrundfarven
  }


}
Avatar billede kalp Novice
10. marts 2005 - 18:59 #1
try {
  Thread.sleep(3000);
} catch (InterruptedException e) {
}
Avatar billede Slettet bruger
10. marts 2005 - 19:05 #2
men hvordan får jeg billede til at skifte når man klikker på det. Hvis man kigger på dette ex:

    g.drawImage(pic, 100, 100, this);
    g.drawImage(sp, 100, 100, this);
    g.drawRect(100, 100, 130, 130);

Her skal billede sp vises når man så klikker på det skal det skifte til pic i tre 3
Avatar billede kalp Novice
10. marts 2005 - 19:11 #3
Du kan lave en metode som kan gøre dette... fx når man klikker på det kaldes en metode du har lavet ved navn

public void skiftPic()
{

NyBillede

}
Avatar billede Slettet bruger
10. marts 2005 - 19:17 #4
Men er ikke lige så god programering så ved ikke helt hvordan jeg skal lave denne metode. Kan du hjælpe med at lave denne metode?
Avatar billede kalp Novice
10. marts 2005 - 19:33 #5
Hvilket værktøj arbejder du i?
Avatar billede Slettet bruger
10. marts 2005 - 19:34 #6
BlueJ
Avatar billede kalp Novice
10. marts 2005 - 19:40 #7
to sek starter lige mit værktøj.
Avatar billede kalp Novice
10. marts 2005 - 19:49 #8
Besværligt.. hvorfor valgte du dog ikke at lave knapper med billeder på *G*:P

Jeg har aldrig arbejdet med Image sjovt nok.. så ved ikke om man kan knytte dette til den.. men prøv

    pic.addActionListener(new ActionListener()
      {
        public void actionPerformed(ActionEvent e)
        {
          pic_actionPerformed(e);
        }
      });
  }

  private void pic_actionPerformed(ActionEvent e)
  {
  g.drawImage(sp, 100, 100, this);
  g.drawRect(100, 100, 130, 130);
  }
Avatar billede Slettet bruger
10. marts 2005 - 19:53 #9
Jeg kan lave knapper med billeder på hvis det er lettere bare fortæl mig hvordan :D
Avatar billede kalp Novice
10. marts 2005 - 19:55 #10
For min skyld hellere ! så kan jeg bedre finde ud af det hehe:o)

istedet for

Image pic
Image pic2

så skal du bruge

ImageIcon pic
ImageIcon pic2


og så lave en knap.. som denne.

private JButton jButton1 = new JButton()

for at sætte billede på den skal du skrive

jButton1.setIcon(pic);
Avatar billede Slettet bruger
10. marts 2005 - 19:56 #11
den metode du har lavet kan du ikke sætte den ind i min kode for aner ikke hvor jeg skal gøre af den :D
Avatar billede kalp Novice
10. marts 2005 - 19:56 #12
jButton1.setBounds(new Rectangle(105, 55, 200, 50));

for at give knappen nogen mål
Avatar billede kalp Novice
10. marts 2005 - 19:57 #13
det er ligemeget hvor du sætter min kode ind fra før:) men tror nu ikke det virker.
Avatar billede Slettet bruger
10. marts 2005 - 20:03 #14
ved    private JButton jButton1 = new JButton() sige den : illegal start of expresion
Avatar billede kalp Novice
10. marts 2005 - 20:04 #15
fjern private... tror du har lagt den et forkert sted.. hehe så bare slet private delen.
Avatar billede Slettet bruger
10. marts 2005 - 20:07 #16
ImageIcon pic  = Toolkit.getDefaultToolkit().getImage("pic.JPG"); 

Her siger den cannot resolve symbol - class imagelcon
Avatar billede kalp Novice
10. marts 2005 - 20:08 #17
skal jeg lave et lille eksempel til dig?
bare et hvor man klikker på en knap så skifter den billede? sende det til dig via. mail?
Avatar billede Slettet bruger
10. marts 2005 - 20:10 #18
lyder som en god ide
Avatar billede Slettet bruger
10. marts 2005 - 20:11 #19
min email er lehto@adslhome.dk
Avatar billede kalp Novice
10. marts 2005 - 20:11 #20
hehe jeg laver lige et eksempel:)
Avatar billede kalp Novice
10. marts 2005 - 20:19 #21
sendt
Avatar billede Slettet bruger
10. marts 2005 - 20:22 #22
jeg kan ikke open det med BlueJ ??
Avatar billede kalp Novice
10. marts 2005 - 20:28 #23
Du skal først pakke filerne ud selvfølgelig.
Har du det må du gå ind i mappen src og videre ind til de 2 java filer.. åben dem i bluej og kør dem.
Avatar billede Slettet bruger
10. marts 2005 - 20:30 #24
okay fandt ud af det. Så mangler den bare at kunne skifte tilbage efter 3 sec
Avatar billede kalp Novice
10. marts 2005 - 20:32 #25
nej for den kode gav jeg dig netop;)

åben frame java filen..

smid denne kode ind istedet for den du har ved samme punkt

  private void jButton1_actionPerformed(ActionEvent e)
  {
  jButton1.setIcon(billede2);
  try {
  Thread.sleep(3000);
  jButton1.setIcon(billede1);
} catch (InterruptedException e) {
}
  }
Avatar billede kalp Novice
10. marts 2005 - 20:33 #26
vent den vil ikke virke
Avatar billede kalp Novice
10. marts 2005 - 20:42 #27
har ikke givet op.. ps hvis jeg ikke skriver ingen for 10 min er min pc brændt sammen:o)
Avatar billede kalp Novice
10. marts 2005 - 21:09 #28
hmm.. sært.. jeg har gjort det på den måde før..:|

  private void jButton1_actionPerformed(ActionEvent e)
  {
  jButton1.setIcon(billede2);
  try {
  Thread.sleep(3000);
  jButton1.setIcon(billede1);
} catch (InterruptedException eaas) {
}
  }

se om det virker hos dig.
Avatar billede Slettet bruger
10. marts 2005 - 21:28 #29
jeg kan ikke mere i dag er taget over til kæresten. kæmper vidre med det i monr :D Men ellers tak for hjælpen endtil vidre.
Avatar billede arne_v Ekspert
10. marts 2005 - 23:07 #30
Man må ikke sleepe i actionPerformed.

Eller helt korrekt: skærmen bliver først opdateret når actionPerformed returnerer !

Prøv og sammenlign de følgende 2 eksempler.
Avatar billede arne_v Ekspert
10. marts 2005 - 23:07 #31
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class VirkerIkke extends JFrame implements ActionListener {
    private JButton klik;

    public VirkerIkke() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new BorderLayout());
        klik = new JButton("Klik");
        klik.setBackground(Color.GREEN);
        klik.addActionListener(this);
        getContentPane().add(klik, BorderLayout.CENTER);
        pack();
    }

    public void actionPerformed(ActionEvent ev) {
        try {
            klik.setBackground(Color.RED);
            Thread.sleep(2000);
            klik.setBackground(Color.YELLOW);
            Thread.sleep(2000);
            klik.setBackground(Color.GREEN);
        } catch (InterruptedException e) {
        }
    }

    public static void main(String[] args) {
        VirkerIkke f = new VirkerIkke();
        f.setVisible(true);
    }
}
Avatar billede arne_v Ekspert
10. marts 2005 - 23:08 #32
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Virker extends JFrame implements ActionListener {
    private JButton klik;

    private Timer t;

    public Virker() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new BorderLayout());
        klik = new JButton("Klik");
        klik.setBackground(Color.GREEN);
        klik.addActionListener(this);
        getContentPane().add(klik, BorderLayout.CENTER);
        pack();
    }

    public void actionPerformed(ActionEvent ev) {
        if (klik.getBackground() == Color.GREEN) {
            klik.setBackground(Color.RED);
            t = new Timer(2000, this);
            t.start();
        } else if (klik.getBackground() == Color.RED) {
            klik.setBackground(Color.YELLOW);
        } else if (klik.getBackground() == Color.YELLOW) {
            t.stop();
            klik.setBackground(Color.GREEN);
        }
    }

    public static void main(String[] args) {
        Virker f = new Virker();
        f.setVisible(true);
    }
}
Avatar billede Slettet bruger
11. marts 2005 - 13:27 #33
okay arne det virker men hvis det nu skal skifte mellem to billeder hvordan skal det så skrives ?
Avatar billede Slettet bruger
05. oktober 2006 - 21:34 #34
Er der ikke en af jer der gider skrive et svar så vi kan få den lukket. Først til mølle :)
Avatar billede arne_v Ekspert
05. oktober 2006 - 21:46 #35
Det maa vist vaere kalps point.
Avatar billede kalp Novice
06. oktober 2006 - 10:17 #36
:-)
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