Avatar billede madshenrik Nybegynder
22. februar 2001 - 16:53 Der er 10 kommentarer og
1 løsning

Tegne

Findes der en nem måde hvorpå man kan tegne cirkler og rektangler udfra koordinater og et centrum.

Mads
Avatar billede madshenrik Nybegynder
22. februar 2001 - 20:56 #1
Jeg har nu fundet ud af at jeg kan bruge noget i stil med dette.

Graphics g
g.drawRect(20,20,20,20);

men jeg kan ikke få noget ud på min frame.

Mads
Avatar billede elv Nybegynder
23. februar 2001 - 08:18 #2
Hvis du har en frame, skal det gøres på en anden måde. Det er lettere at lave på an applet:
import java.applet.*;
import java.awt.*;
public class MyApplet extends Applet
{
  public void paint(Graphics g)
  {
    g.drawRect(20,20,40,40);
  }
}

Det skulle give dig en flot lille firkant...
Hvis du i stedet VIL lave en frame, skal du lave noget med at indsætte et panel eller noget i den stil. Jeg bruger altid applets.
Avatar billede madshenrik Nybegynder
23. februar 2001 - 08:27 #3
Er der nogen der kan lave det på en frame.

Mads
Avatar billede elv Nybegynder
23. februar 2001 - 08:47 #4
Jeg skulle lige bikse noget sammen:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FramePaint extends JFrame
{
  public FramePaint()
  {
    super(\"At tegne er at leve...\");
    setSize(400,300);
    show();
  }
  public void paint(Graphics g)
  {
    g.drawRect(50,50,100,100);//Husk at hjørnet ikke er 0,0 da framens titellinie dækker over noget af det
  }


  public static void main (String args[])
  {
    FramePaint app = new FramePaint();
    app.addWindowListener(new WindowAdapter()
    {
      public void WindowClosing(WindowEvent e)
      {
        System.exit(0);
      }
    }
  );
  }

}

Avatar billede madshenrik Nybegynder
23. februar 2001 - 15:05 #5
Elv jeg har et spørgsmål angående hvordan det her virker
public void paint(Graphics g)
  {
    g.drawRect(50,50,100,100);//Husk at hjørnet ikke er 0,0 da framens titellinie dækker over noget af det
  }
Fordi når nu jeg har lavet min kode til en frame med nogle knapper og tekst felter osv. alle disse er selvfølgelig placeret på this.setContentPane.  Så overskriver den paint metode det hele kan jeg ikke painte på et panel i stedet for framen.

Mads
Avatar billede madshenrik Nybegynder
23. februar 2001 - 17:16 #6
Har fundet ud af at hvis man bare bruger en almindelige Frame i stedet for JFrame så dur det. Men Elv hvordan gør man hvis man ønsker en metode ud over paint til at tegne for en. F.eks.

  private Graphics g1;

public static void main (String [] args)
{
  rectpaint(g1);
}

  public void rectpaint(Graphics g)
  {
    g.drawRect(50,50,100,100);
  }

Det kan jeg ikke få til at lykkes. Håber du ved hvad der er galt. Umiddelbart er der en null pointer i g1 men hvad s.. skal den sættes til.

Mads
Avatar billede trolle Nybegynder
23. februar 2001 - 18:31 #7
Du kan blot kalde rectpaint()  i din paint() metode 
Avatar billede madshenrik Nybegynder
24. februar 2001 - 13:49 #8
Jeg har fundet de fejl jeg har lavet og det virker fint nu. Til dem der evt. vil bruge dette spørgsmål til senere er Nullpointeren der fordi at Graphics skal initieres i stil med dette

  g = p.getGraphics ().create();
  frame = this.getGraphics ().create ();

Tak for hjælpen Elv.

Mads
Avatar billede elv Nybegynder
24. februar 2001 - 15:08 #9
Selv tak. Jeg har lige et spørgsmål til din kode. I linien...
  g = p.getGraphics ().create();
...hvad er p?
Avatar billede madshenrik Nybegynder
24. februar 2001 - 17:19 #10
P er i dette tilfælde et panel men det kunne være en frame eller noget helt tredje. Det er på den måde du bestemmer hvor grafikken skal tegnes. Så istedet for at tegne på en frame tegner jeg på et panel.

Mads
Avatar billede elv Nybegynder
25. februar 2001 - 22:07 #11
Ok =)
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