2010-11-18 9 views

risposta

7

ho creato un piccolo programma di esempio:

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

Si potrebbe anche utilizzare il metodo update o paintComponents che sarebbe molto più bello. Ma poi devi assicurarti che venga chiamato. In caso di problemi e che non venga chiamato è possibile utilizzare la seguente soluzione: Why is paint()/paintComponent() never called?

+0

poco pulito grazie esempio. Ho dovuto aggiungere le importazioni da eseguire: import javax.swing. *; importare java.awt.Graphics; importare java.awt.Dimension; – strainer

+0

Grazie, per caso sai come impostare il colore della linea/punto/punto? :) –

+0

come fare per il doppio invece di ints? –

0

chiedetevi se il vostro davvero vuole estendere la JFrame o JPanel. Se decidi di non farlo, puoi creare uno JComponent di base. Si può avere un successo variabile con questo a seconda del gestore di layout che si utilizza.

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

Invia il grafico di riferimento e l'asse x ed y per fare un pixel:

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