public Jubii(){ JPanel k = new JPanel(); getContentPane().add(k); setSize(200, 200); setTitle("Example1"); setVisible(true);
}
public void paintComponent(Graphics g){
g.setColor(Color.red); g.drawString("Write this text!",10, 10);
}
public static void main(String[] args) {
Jubii d = new Jubii();
} }
Men jeg kan ikke få den til at vise teksten "Write this text!". Jeg mente at så snart man lavede et nyt JPanel blev metoden paintComponent automatisk kørt.
Jeg kan godt få det til at du hvis jeg extender JPanel istedet for, men vil gerne prøve at få det til at du på denne her måde.
public class Jubii extends JFrame { public Jubii() { PaintPanel k = new PaintPanel(); getContentPane().add(k); setSize(200, 200); setTitle("Example1"); setVisible(true); }
public static void main(String[] args) { Jubii d = new Jubii(); } }
class PaintPanel extends JPanel { public void paint(Graphics g) { g.setColor(Color.red); g.drawString("Write this text!",10, 10); } }
Ok jeg kan godt se at man kan få det til at du hvis man laver new JLabel. Men hvad nu hvis jeg gerne vil have udskrevet det som jeg har skrevet nede i min paintComponent metode?
fandt udaf at jeg bare skulle kalde min metode for paint istedet for paintComponent! Wierd!! Så nu kan jeg få skrevet alt det ud som jeg skriver i min paint metode.
Et par sidebemærkninger, selvom det nok bliver vanskeligt at gøre en meget lang historie kort.
I AWT overrides paint() hvis man vil skrive tekst med drawString eller vil tegne.
I Swing overrides paintComponent() hvis det samme skal gøres, dog lige med undtagelse af Main Windows (JFrame, JApplet, JDialog), disse arver fra deres respektive AWT parents og her overrides paint.
Hvis du vil tegne/skrive i Swing (The Swing Way), så skal du adde et JPanel eller en Canvas til din JFrame og override henholdsvis paintComponent/paint. Samtidig kaldes super.paintComponent(g) så dit JPanel eventuelt ryddes inden der skrives.
Eks.
import javax.swing.*; import java.awt.*;
public class Jubii extends JFrame {
public Jubii(){ getContentPane().add(new PaintPanel()); setSize(200, 200); setTitle("Example1"); setVisible(true); }
public static void main(String[] args) { new Jubii(); } }
class PaintPanel extends JPanel{ public void paintComponent(Graphics g){ super.paintComponent(g); g.setColor(Color.red); g.drawString("Write this text!",10, 10); } }
Glemte vist lige en vigtig ting her, alt afhængig af opgaven vil langt de fleste selvfølgelig vælge: add(new JLabel("noget"));
Synes godt om
Ny brugerNybegynder
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.