Avatar billede anjensen1 Novice
26. juli 2001 - 12:05 Der er 9 kommentarer og
1 løsning

kalde paint

hejsa
Jeg har denne lille applet

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

class TegneBoks extends Canvas
{
    //Canvas myCanvas = new Canvas()
   
    public void makeNoice()
    {
//        Toolkit.getDefaultToolkit().beep(); //JEPS!
    }
   
   
    public void paint(Graphics g)
    {
        g.drawString(\"og hur gør vi så ded.........du\",10,21);
        Toolkit.getDefaultToolkit().beep(); //nope KALDES ALDRIG!
    }
   
    public void repaint()
    {
    //    Toolkit.getDefaultToolkit().beep(); //JEPS!
    }
   
}//end class

public class BeepApplet extends Applet implements ActionListener
{
    TegneBoks tb= new TegneBoks();
    Label lab = new Label(\"så er den startet op\");
     
    public void init ()
    {
      Button BtnBeep = new Button(\"BeepMeeNow\");
      this.add(BtnBeep);
      this.add(lab);
      BtnBeep.addActionListener(this); 
        //Toolkit.getDefaultToolkit().beep(); //jeps   
      }

  public void actionPerformed(ActionEvent e)
  {     
      //Graphics g= null;
    //tb.paint(g);//nope er ikke nok (nullpointerException)
   
      tb.repaint(); //donno.....????
   
    lab.setText(\"jeps det kommer på\" );//jeps   
    //Toolkit.getDefaultToolkit().beep(); //jeps
    tb.makeNoice();//jeps
    }

}//end class

Det eneste jeg vil er at kalde paint() og få String \"og hur gør vi så ded.........du\" ved at trykke på knappen i den angivne position.

Jeg troede at repaint() kaldte paint(g) men det virker ikke
Nogen der har en løsning?
Avatar billede lbhansen Nybegynder
26. juli 2001 - 12:17 #1
jeg kan ikke se nogen steder, at du har tilføjet tb til din Applet!
Avatar billede anjensen1 Novice
26. juli 2001 - 13:17 #2
Hej Ib
Kan du præcisere det?
Vis gerne noget kode.
mvh
Avatar billede lbhansen Nybegynder
26. juli 2001 - 13:20 #3
Hvis du vil se din komponent blive tegnet, så kræver det jo at den er synlig. Ligesom du tilføjer din knapper for at du kan se dem, så skal du jo også tilføje dit canvas
this.add(tb)
Avatar billede anjensen1 Novice
26. juli 2001 - 13:27 #4
Sådan her:
    public void init ()
    {
      Button BtnBeep = new Button(\"BeepMeeNow\");
      this.add(BtnBeep);
      this.add(lab);
this.add(tb);
      BtnBeep.addActionListener(this); 
        //Toolkit.getDefaultToolkit().beep(); //jeps   
      }

Det virker ikke..?
Avatar billede lbhansen Nybegynder
26. juli 2001 - 21:35 #5
nu ved jeg ikke hvilken størrelse du bruger på din Applet, men der er en sandsynlighed for at dine komponenter fylder mere en det synlige område, og så kan du ikke den sidste komponent du sætter på
Avatar billede anjensen1 Novice
27. juli 2001 - 11:12 #6
-Hej Ib
Jeg har 700 * 300 som min width height i html-filen.
Jeg har også teksten på appletten hvis jeg flytter paint ned i hovedklassen - Iøvrigt er der også beep via toolkit -Den ville vel under alle omstændigheder blive aktiveret!?

Jeg troede det her var vildt banalt- Problemet med at få en grafikhændelse som respons på et kanptryk må vel være et af de mest almindelige problemer overhovedet??

Er sammenhængen mellem paint og repaint ikke den at hvis repaint kaldes så kalder repaint selv den pait som findes i samme blok / klasse??
DET SKER IKKE!
jeg kalder OG aktiverer repaint (den kan \'beepe\') men repaint kalder IKKE paint??

Hvis der er noget jeg har galt fat på må I gerne fortælle det *s*

Jeg øger point jeg giver 60 for en løsning!
Avatar billede lbhansen Nybegynder
27. juli 2001 - 12:42 #7
prøv at slette din repaint metode i dit canvas, eller start med super.repaint();
Avatar billede lbhansen Nybegynder
27. juli 2001 - 12:42 #8
det er repaint der kalder paint, og hvis du selv har overskrevet funktionaliteten, så bliver paint aldrig kaldt
Avatar billede anjensen1 Novice
27. juli 2001 - 13:47 #9
Nej virker ikke.
Jeg er dog i tvivl om hvor du mener super.repaint(); skal indsættes?
Normalt vil et kald af super.<> jo være 1. linie i en konstruktør for en klasse der har en \'far\' som skal have sin konstruktør kaldt.
Kan du ikke vise hvor super.repaint(); kaldet skal ind?
Det med repaint havde jeg så forstået korrekt det er da altid noget- men hvorfor videregives så ikke klasse TegneBoks repaint-kald til klassens paint -det sker jo ikke for så ville toolkit-beep metoden jo virke??
Avatar billede anjensen1 Novice
28. juli 2001 - 11:07 #10

Trækker spørgsmålet
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