Olá pessoal, estou desenhando um ponto no local clicado do JFrame, mas o que está acontecendo
é que o ponto não é adicionado no local exato, como que eu faço para fazer com que o ponto
fique exatamente no local clicado :?: :?: :?: :?:
Como adicionar ponto no local exato clicado do JFrame?
7 Respostas
tem que ver como vc esta fazendo
posta seu codigo ai
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class PintarPonto extends JFrame {
public PintarPonto() {
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
this.getContentPane().setLayout( null );
this.setSize( new Dimension(400, 300) );
this.setTitle( "Pintar ponto através do clique" );
this.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
this_mouseClicked(e);
}
});
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
private void this_mouseClicked(MouseEvent e) {
Ponto ponto = new Ponto();
ponto.setBounds(this.getMousePosition().x, this.getMousePosition().y, 30, 30);
ponto.setBackground(Color.BLUE);
ponto.setOpaque(true);
this.add(ponto);
repaint();
}
public static void main(String[] args) {
new PintarPonto();
}
}
class Ponto extends JPanel {
@Override
public void paint(Graphics g) {
g.setColor(Color.RED);
g.fillOval(10, 10, 7, 7);
g.setColor(Color.BLACK);
g.drawOval(10, 10, 7, 7);
}
}
voce precisa mesmo adicional um jPanel a cada clique?
Dá pra fazer sem o painel?
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Point2D;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Application extends JPanel implements MouseListener{
List<Point2D>points = new ArrayList<Point2D>();
public Application(){
this.addMouseListener(this);
this.setVisible(true);
}
@Override
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g.create();
for(Point2D p: points){
g2.drawOval(new Double(Math.round(p.getX())).intValue(),new Double( Math.round(p.getY())).intValue(), 10, 10);
}
}
public void mouseClicked(MouseEvent arg0) {
points.add(new Point2D.Float(arg0.getX(),arg0.getY()));
repaint();
}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {}
public static void main(String[] args) {
JFrame frame = new JFrame();
Application app = new Application();
frame.setLocationRelativeTo(null);
frame.setSize(400, 400);
frame.getContentPane().add(app);
frame.setVisible(true);
}
}
Desculpa dar a resposta pronta, é que deu vontade de fazer :D
[i]*Está mal feito pra !@#$ mas funciona :S
Valeu cara, melhor ainda, rsrsrs.
Abraços.
só mais uma coisa (embora fuja deste tópico), por que vc fez
e não
:?: :?: :?: :?:
Criado 16 de abril de 2010
Ultima resposta 16 de abr. de 2010
Respostas 7
Participantes 3
Alura O que é Python? — um guia completo para iniciar nessa linguagem de programação Acesse agora o guia sobre Python e inicie sua jornada nessa linguagem de programação: o que é e para que serve, sua sintaxe e como iniciar nela!
Lumina Lumina: a IA que te traz resultados Prompts prontos por especialistas. Resolva seus problemas de verdade.