Comecei a fazer aqui e já tive um problema que eu não estou entendendo.
Bom, criei uma classe que contem 1 JEditorPane (ao invés de textArea) e 2 Rectangles (1 para o canto superior esquerdo e outro para o inferior direito):
public class CampoTexto implements MouseMotionListener, MouseListener {
private JEditorPane editor;
private Rectangle ds,di;
int baseX = -1;
int baseY = -1;
Container form;
public CampoTexto(Container f) {
this.form = f;
editor = new JEditorPane();
editor.setBounds(0,0,60,60);
editor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
editor.addMouseListener(this);
editor.addMouseMotionListener(this);
editor.setFocusable(true);
ds = new Rectangle(0,0,8, 8);
di = new Rectangle(60,60,8, 8);
}
public void monta(){
desenhaQuadrados();
form.add(editor);
}
public void desenhaQuadrados(){
Graphics2D g2 = (Graphics2D) form.getGraphics();g2.fill(ds);
g2.fill(ds);
g2.fill(di);
}
public void redesenha(){
form.repaint();
desenhaQuadrados();
}
public void mouseDragged(MouseEvent e) {
System.out.println("Dragged");
if ((this.baseX != -1) && (this.baseY != -1)) {
int x = editor.getX() + e.getX() - this.baseX;
int y = editor.getY() + e.getY() - this.baseY;
editor.setLocation(x, y);
ds.setLocation(x-8, y-8);
di.setLocation(x+editor.getWidth(), y+editor.getHeight());
redesenha();
}
}
public void mousePressed(MouseEvent e) {
if(e.getButton()==e.BUTTON3){
System.out.println("moved");
this.baseX = e.getX();
this.baseY = e.getY();
}
}
public void mouseReleased(MouseEvent e) {
if(e.getButton()==e.BUTTON3){
System.out.println("released");
this.baseX = -1;
this.baseY = -1;
}
redesenha();
}
}
E instancio um objeto desta classe no onclick de um botao:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
CampoTexto t = new CampoTexto(jPanel2);
t.monta();
}
O que está acontecendo é o seguinte: eu consigo MOVER o JEditorPane, só que os "retangulos" eles até se movem junto, mas "piscando" e quando eu paro de mover, os retangulos simplesmente desaparecem... Se eu volto a mover, eles aparecem piscando denovo, mas dai eu paro e eles desaparecem denovo.
Qual é o erro?