Avatar billede data2k.dk Nybegynder
07. november 2004 - 12:26 Der er 11 kommentarer og
1 løsning

brug af timer

hejsa! har prøvet at få min timer til at fungere men det sker ikke rigtig noget... den skal andvendes i denne metode

  public void resultat(Icon et, Icon to, String player, int x, int y,int vandt, int vandt2)
  {
    jLabel1.setText(player);
    jButton3.setIcon(et);
    jButton4.setIcon(to);
    jLabel4.setText(player);
    jLabel6.setText(String.valueOf(x));
    jLabel7.setText(String.valueOf(y));
   
if (vandt2 > vandt)
jLabel9.setText("Computeren vandt!");
else
jLabel9.setText(player +" vandt!");

  }


det er

jButton3.setIcon(et);
jButton4.setIcon(to);

som først skal "animeres" før de bliver sat til (et) og (to)

på samme side har jeg oprettet 6 forskellige icon objekter..
De hedder

en
to
tre
fire
fem
seks

dvs. før jButton3.setIcon(et);  bliver sat til (et)
så skal den først lige sættes til nogen af de objecter for at lave animationen
Avatar billede arne_v Ekspert
07. november 2004 - 12:29 #1
Hvordan ser din timer kode ud ?
Avatar billede data2k.dk Nybegynder
07. november 2004 - 12:31 #2
tag jer ikke af sjusket... skal ikke bruge koden til noget, men vil bare prøve det af: ) ... der er sikkert en masse overflødigt med.. ignorer det bare;)


package mypackage1;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JButton;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.*;

public class Frame extends JFrame

{


  private JLabel jLabel1 = new JLabel();
  private JLabel jLabel2 = new JLabel();
  private JButton jButton1 = new JButton();
  private JButton jButton2 = new JButton();
  private JButton jButton3 = new JButton();
  private JButton jButton4 = new JButton();
  private JLabel jLabel3 = new JLabel();
  private JLabel jLabel4 = new JLabel();
  private JLabel jLabel5 = new JLabel();
  private JLabel jLabel6 = new JLabel();
  private JLabel jLabel7 = new JLabel();
  private JLabel jLabel8 = new JLabel();
  private JLabel jLabel9 = new JLabel();
  private int delay = 5;
  private Timer timer;
  private ImageIcon en, to, tre, fire, fem, seks, TerningCPU, TerningDIG;
  public Frame()
  {
    try
    {
      jbInit();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

  }

  private void jbInit() throws Exception
  {
    timer = new Timer (delay, null);
   
    en = new ImageIcon("et.gif");
    to = new ImageIcon("to.gif");
    tre = new ImageIcon("tre.gif");
    fire = new ImageIcon("fire.gif");
    fem = new ImageIcon("fem.gif");
    seks = new ImageIcon("seks.gif");
    this.getContentPane().setLayout(null);
    this.setSize(new Dimension(400, 250));
    this.setTitle("TerningSpil af Bilal Wachah");
    jLabel1.setBounds(new Rectangle(30, 115, 275, 15));
    jLabel1.setFont(new Font("Courier New", 1, 15));
    jLabel1.setToolTipText("null");
    jLabel2.setText("Computeren");
    jLabel2.setBounds(new Rectangle(220, 115, 140, 15));
    jLabel2.setFont(new Font("Courier New", 1, 16));
    jButton1.setText("Okay");
    jButton1.setBounds(new Rectangle(220, 185, 73, 23));
    jButton2.setText("Luk");
    jButton2.setBounds(new Rectangle(300, 185, 73, 23));
    jButton2.addActionListener(new ActionListener()
      {
        public void actionPerformed(ActionEvent e)
        {
          jButton2_actionPerformed(e);
        }
      });
    jButton3.setBounds(new Rectangle(70, 35, 49, 49));
    jButton3.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
    jButton3.setBackground(new Color(236, 236, 236));
    jButton3.setSize(new Dimension(49, 49));
    jButton4.setBounds(new Rectangle(250, 35, 49, 49));
    jButton4.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
    jButton4.setBackground(new Color(236, 236, 236));
    jButton4.setSize(new Dimension(49, 49));
    jLabel3.setText("Stillingen er");
    jLabel3.setBounds(new Rectangle(30, 160, 135, 15));
    jLabel3.setFont(new Font("Tahoma", 1, 15));
    jLabel4.setBounds(new Rectangle(30, 180, 85, 15));
    jLabel4.setFont(new Font("Tahoma", 1, 11));
    jLabel5.setText("Computer:");
    jLabel5.setBounds(new Rectangle(30, 195, 75, 15));
    jLabel5.setFont(new Font("Tahoma", 1, 11));
    jLabel6.setText("jLabel6");
    jLabel6.setBounds(new Rectangle(150, 180, 34, 14));
    jLabel7.setText("jLabel7");
    jLabel7.setBounds(new Rectangle(150, 195, 34, 14));
    jLabel8.setBounds(new Rectangle(145, 140, 180, 15));
    jLabel8.setFont(new Font("Tahoma", 1, 20));
    jLabel9.setText("jLabel9");
    jLabel9.setBounds(new Rectangle(125, 5, 205, 15));
    jLabel9.setFont(new Font("Tahoma", 1, 17));
    this.getContentPane().add(jLabel9, null);
    this.getContentPane().add(jLabel8, null);
    this.getContentPane().add(jLabel7, null);
    this.getContentPane().add(jLabel6, null);
    this.getContentPane().add(jLabel5, null);
    this.getContentPane().add(jLabel4, null);
    this.getContentPane().add(jLabel3, null);
    this.getContentPane().add(jButton4, null);
    this.getContentPane().add(jButton3, null);
    this.getContentPane().add(jButton2, null);
    this.getContentPane().add(jButton1, null);
    this.getContentPane().add(jLabel2, null);
    this.getContentPane().add(jLabel1, null);
  }
 
  public void resultat(Icon et, Icon to, String player, int x, int y,int vandt, int vandt2)
  {
    jLabel1.setText(player);
    jButton3.setIcon(et);
    jButton4.setIcon(to);
    jLabel4.setText(player);
    jLabel6.setText(String.valueOf(x));
    jLabel7.setText(String.valueOf(y));
   
if (vandt2 > vandt)
jLabel9.setText("Computeren vandt!");
else
jLabel9.setText(player +" vandt!");

  }

  private void jButton2_actionPerformed(ActionEvent e)
  {
  this.setVisible(false);
  }
}
Avatar billede data2k.dk Nybegynder
07. november 2004 - 12:36 #3
sorry det ser så forvirrende ud igen... jlabel1, 2, 3, 4 osv fortæller ikke så meget: )  men ville bare prøve timeren
Avatar billede arne_v Ekspert
07. november 2004 - 12:44 #4
Jeg kan ikke se at din timer laver noget ??

Jeg lavede engang dette super simple eksempel på brug af timer:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class BlackAndWhite extends JFrame implements ActionListener {
  private static boolean black;
  public BlackAndWhite() {
      black = true;
      getContentPane().setBackground(black ? Color.black : Color.white);
      setSize(100, 100);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      (new Timer(2000, this)).start();
  }
  public void actionPerformed(ActionEvent evt) {
      black = !black;
      getContentPane().setBackground(black ? Color.black : Color.white);
  }
  public static void main(String[] args) {
      BlackAndWhite f = new BlackAndWhite();
      f.setVisible(true);
  }
}
Avatar billede data2k.dk Nybegynder
07. november 2004 - 12:47 #5
arne_v:

jeg fjernede timeren så det ikke lå og forvirrede i koden... men havde gjort det sådan her

public void resultat(Icon et, Icon to, String player, int x, int y,int vandt, int vandt2)
  {
   
timer.start();
jButton3.setIcon(et);
timer.start();
jButton3.setIcon(fire);
timer.start();
jButton3.setIcon(to);

    jLabel1.setText(player);
    jButton3.setIcon(et);
    jButton4.setIcon(to);
    jLabel4.setText(player);
    jLabel6.setText(String.valueOf(x));
    jLabel7.setText(String.valueOf(y));
   
if (vandt2 > vandt)
jLabel9.setText("Computeren vandt!");
else
jLabel9.setText(player +" vandt!");

  }
Avatar billede data2k.dk Nybegynder
07. november 2004 - 13:12 #6
hvis jeg bare vil have min code til at vente i 3 seconder før den kører koden her igennem hvordan vil det så se ud?

public void resultat(Icon et, Icon to, String player, int x, int y,int vandt, int vandt2)
  {
   
    jLabel1.setText(player);
    jButton3.setIcon(et);
    jButton4.setIcon(to);
    jLabel4.setText(player);
    jLabel6.setText(String.valueOf(x));
    jLabel7.setText(String.valueOf(y));
   
if (vandt2 > vandt)
jLabel9.setText("Computeren vandt!");
else
jLabel9.setText(player +" vandt!");

  }
Avatar billede data2k.dk Nybegynder
07. november 2004 - 13:12 #7
gal jeg blander engelsk og dansk sammen hehe... code = kode... seconder = sekunder
Avatar billede arne_v Ekspert
07. november 2004 - 13:18 #8
Du sætter din timer op med et objekt som har en actionPerformed metode
og så er det den som "gør noget".
Avatar billede data2k.dk Nybegynder
07. november 2004 - 13:33 #9
Jeg kigger på det senere... er lige startet på alt det der med listeners og actionperformed.. tror ikke jeg er med på det endnu...
Avatar billede myplacedk Nybegynder
07. november 2004 - 16:10 #10
> hvis jeg bare vil have min code til at vente i 3 seconder før den kører koden her igennem hvordan vil det så se ud?

Start med:
Thread.sleep(3000);

(Der er så en exception der skal håndteres, men den kan du bare ignorere, dvs. en try/catch med en tom catch.)
Avatar billede myplacedk Nybegynder
07. november 2004 - 16:11 #11
try {
  Thread.sleep(3000);
} catch (InterruptedException e) {
}
Avatar billede data2k.dk Nybegynder
07. november 2004 - 18:42 #12
myplacedk!

Perfekt! Så slap jeg helt for alt det andet der... og det gør præcis som det andet... takker... du får lige 30point oven i de oprindelige 30point!
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