Ol�:

   Criei um programinha (no JBuilder) em que ao clicar o mouse em uma posi��o 
do JPanel, al�m de fornecer a posi��o do mouse, tamb�m desenha um ponto nesta 
posi��o. Os valores da posi��o do Mouse parecem OK, o mesmo quanto � posi�ao X 
do ponto. O problema � quanto a coordenada Y do ponto: este aparece sempre uns 
pixels acima da posi��o do mouse. Em termos de programa��o a coordenada Y do 
ponto � menos que a coordenada Y do Mouse. Tenho quase a certeza que esta  
diferen�a � igual a altura da barra de t�tulo.
   Ele funciona da seguinte forma: nos eventos MouseDragged e MouseEvent, seus 
respectivos m�todos que os manipulam chamam o m�todo criaPonto(MouseEvent) que 
passa as coordenadas do mouse para dois atributos globais (x, y) e depois chama 
o m�todo repaint(). Como todos sabem, este chama paint(Graphics). Neste m�todo 
� criado um retangulo atrav�s de g.drawRect(x, y, 1, 1). 
   (A prop�sito algu�m conhece algum m�todo melhor de se pintar um pixel na 
tela do que este?)
    Agrade�o qualquer dica.

    Grato, 

    Rafael U. C. Afonso


A seguir disponibilizo os c�digos-fontes do programa. Se acharem que h� coisa 
demais nele a culpa � do JBuilder fica criando essas coisas. 

package testegrafico;

import javax.swing.UIManager;
import java.awt.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2002</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */

public class MousePonto {
  boolean packFrame = false;

  //Construct the application
  public MousePonto() {
    PintaPonto frame = new PintaPonto();
    //Validate frames that have preset sizes
    //Pack frames that have useful preferred size info, e.g. from their layout
    if (packFrame) {
      frame.pack();
    }
    else {
      frame.validate();
    }
    //Center the window
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height) {
      frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width) {
      frameSize.width = screenSize.width;
    }
    frame.setLocation((screenSize.width - frameSize.width) / 2, 
(screenSize.height - frameSize.height) / 2);
    frame.setVisible(true);
  }
  //Main method
  public static void main(String[] args) {
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch(Exception e) {
      e.printStackTrace();
    }
    new MousePonto();
  }
}



package testegrafico;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2002</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */

public class PintaPonto extends JFrame {
  JPanel contentPane;
  JLabel statusBar = new JLabel();
  BorderLayout borderLayout1 = new BorderLayout();
  JPanel pnlTela = new JPanel();
  int x, y;

  //Construct the frame
  public PintaPonto() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception  {
    //setIconImage(Toolkit.getDefaultToolkit().createImage
(PintaPonto.class.getResource("[Your Icon]")));
    contentPane = (JPanel) this.getContentPane();
    titledBorder1 = new TitledBorder("");
    border1 = BorderFactory.createEtchedBorder(Color.white,new Color(142, 142, 
142));
    contentPane.setLayout(borderLayout1);
    this.setSize(new Dimension(400, 300));
    this.setTitle("Exibi��o de Pontos do Mouse");
    statusBar.setBorder(border1);
    statusBar.setText(" ");
    pnlTela.addMouseMotionListener(new PintaPonto_pnlTela_mouseMotionAdapter
(this));
    pnlTela.addMouseListener(new PintaPonto_pnlTela_mouseAdapter(this));
    contentPane.add(statusBar, BorderLayout.SOUTH);
    contentPane.add(pnlTela, BorderLayout.CENTER);
  }
  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }

  void pnlTela_mouseMoved(MouseEvent e) {
  }

  void pnlTela_mousePressed(MouseEvent e) {
    criaPonto(e);
  }

  public void paint(Graphics g) {
    g.drawRect(x, y, 1, 1);
  }

  void pnlTela_mouseDragged(MouseEvent e) {
    criaPonto(e);
  }

  void criaPonto(MouseEvent e) {
    x = e.getX();
    y = e.getY();
    java.text.DecimalFormat df = new java.text.DecimalFormat("000");
    statusBar.setText("X = " + df.format(x) + ", Y = " + df.format(y));
    this.repaint();
  }
  private TitledBorder titledBorder1;
  private Border border1;
}

class PintaPonto_pnlTela_mouseMotionAdapter extends 
java.awt.event.MouseMotionAdapter {
  private PintaPonto adaptee;

  PintaPonto_pnlTela_mouseMotionAdapter(PintaPonto adaptee) {
    this.adaptee = adaptee;
  }
  public void mouseMoved(MouseEvent e) {
    adaptee.pnlTela_mouseMoved(e);
  }
  public void mouseDragged(MouseEvent e) {
    adaptee.pnlTela_mouseDragged(e);
  }
}

class PintaPonto_pnlTela_mouseAdapter extends java.awt.event.MouseAdapter {
  private PintaPonto adaptee;

  PintaPonto_pnlTela_mouseAdapter(PintaPonto adaptee) {
    this.adaptee = adaptee;
  }
  public void mousePressed(MouseEvent e) {
    adaptee.pnlTela_mousePressed(e);
  }
}

------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP 
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a