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.
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); } } ); }
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.
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.
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 ();
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.
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.