2010-11-18 4 views

Antwort

7

ich ein kleines Beispielprogramm erstellt haben:

public class Test extends JFrame { 

    public Test() { 
     this.setPreferredSize(new Dimension(400, 400)); 
     this.pack(); 
     this.setVisible(true); 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } 

    @Override 
    public void paint(Graphics g) { 
     super.paint(g); 

     // define the position 
     int locX = 200; 
     int locY = 200; 

     // draw a line (there is no drawPoint..) 
     g.drawLine(locX, locY, locX, locY); 
    } 

    public static void main(String[] args) { 
     Test test = new Test(); 
    } 
} 

Sie könnten auch die update oder paintComponents Methode verwenden, die viel schöner wäre. Aber dann musst du sicherstellen, dass es aufgerufen wird. Wenn Sie Probleme haben und es nicht aufgerufen wird erhalten Sie die folgende Lösung verwenden: Why is paint()/paintComponent() never called?

+0

Ordentliches kleines Beispiel Dank. Ich musste die importierten Dateien hinzufügen: import javax.swing. *; import java.awt.Graphics; importieren Sie java.awt.Dimension; – strainer

+0

Danke, können Sie die Farbe der Linie/Punkt/Punkt einstellen? :) –

+0

Wie mache ich es für Doppel anstelle von Ints? –

0

Fragen Sie sich, wenn Ihr wirklich wollen JFrame oder JPanel zu verlängern. Wenn Sie sich entscheiden, dass Sie das nicht tun, können Sie eine grundlegende JComponent erstellen. Je nachdem, welchen Layout-Manager Sie verwenden, kann dies unterschiedlich erfolgreich sein.

public class PixelComponent extends JComponent 
{ 
    private Color color; 

    public PixelComponent(Color color) 
    { 
     super(); 
     this.color = color; 
    } 

    public PixelComponent() 
    { 
     this(Color.BLACK); 
    } 

    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 

     g.setColor(color); 
     g.fillRect(0, 0, 1, 1); 
    } 
} 
0

Senden Sie die Grafik-Referenz und Achse x und y ein Pixel zu machen:

private void doPixel(Graphics g, int x, int y){ g.fillRect(x, y, 1, 1); }