il codice l'ho talmente tanto sporcato che alla fine son tornato al punto di partenza. te lo incollo ugualmente giusto per farti un'idea dello scheletro dell'applicazione.Originariamente inviato da andbin
Senza vedere il codice che hai scritto è molto improbabile riuscire a capire cosa non va.
Hai le idee chiare sul "painting" nei componenti? Il vero "contesto" di disegno è solo nel paintComponent() (per i componenti Swing). In altri momenti (es. in un mouseDragged) potresti prendere il Graphics e disegnare ma ... non è "permanente", proprio perché il contesto di disegno in cui si dovrebbe ridisegnare il contenuto del componente è nel paintComponent().
questa è la lavagna
questa invece è una forma che voglio disegnare sulla lavagna (in questo caso una linea)codice:import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class WhiteBoard extends JPanel implements MouseListener, MouseMotionListener { private int startX, startY, endX, endY; public WhiteBoard() { this.setBackground(Color.white); this.addMouseListener(this); this.addMouseMotionListener(this); } protected void paintComponent(Graphics g){ super.paintComponent(g); } @Override public void mouseDragged(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("Mouse Dragged: "+arg0.getX() +" "+arg0.getY()); endX = arg0.getX(); endY = arg0.getY(); } @Override public void mouseMoved(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("Mouse Pressed: "+arg0.getX() +" "+arg0.getY()); startX = arg0.getX(); startY = arg0.getY(); endX = arg0.getX(); endY = arg0.getY(); } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("Mouse Released: "+arg0.getX() +" "+arg0.getY()); } }
Shape estende JComponent ma si limita a inizializzare le 4 coordinatecodice:import java.awt.Color; import java.awt.Graphics; public class Line extends Shape{ public Line(int x1, int y1, int x2, int y2){ super(x1,y1,x2,y2); } public void setX1(int x1){ this.x1 = x1; } public void setX2(int x2){ this.x2 = x2; } public void setY1(int y1){ this.y1 = y1; } public void setY2(int y2){ this.y2 = y2; } public void paintComponent(Graphics g){ super.paintComponent(g); g.setColor(Color.black); g.drawLine(x1,y1,x2,y2); } }
thx per la risposta![]()

Rispondi quotando