Bom dia precisa de uma ajuda, queria aumentar o tamanho do quadrado, quando utilizo o angulo 0 e 270 funciona normalmente, porém quando a palavra está com o angulo 90 e 180 quando aumenta com o mouse ele não respeita a regra, segue os dados realizado no PAINEL
Angulo: 0
Angulo 90
txtpn1 = new JEditorPane() {
@Override
protected void paintComponent(Graphics g) {
int angle = txtpn[0]; //Angulo 0,90,180,270
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
AffineTransform aT = g2.getTransform();
Shape oldshape = g2.getClip();
double x = getWidth() / 2.0;
double y = getHeight() / 2.0;
aT.rotate(Math.toRadians(angle), x, y);
g2.setTransform(aT);
super.paintComponent(g);
}
txtpn1.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent arg0) {
arrastarObejto(txtpn1, arg0);
}
}
public void arrastarObejto(JComponent component, MouseEvent e) {
if (component.getCursor().getType() != 11 && component.getCursor().getType() != 9) {
component.setLocation(component.getLocation().x + e.getX(), component.getLocation().y + e.getY());
}
if (component.getCursor().getType() == 11 || component.getCursor().getType() == 9) {
component.setSize(e.getX(), e.getY());
}
}
Código mais simples para ser analisado:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.border.LineBorder;
import java.awt.Color;
import java.awt.geom.AffineTransform;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseEvent;
public class help extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
help frame = new help();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public help() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblCorrect = new JLabel("Correct"){
@Override
protected void paintComponent(Graphics g) {
int angle = 0;
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
AffineTransform aT = g2.getTransform();
//Shape oldshape = g2.getClip();
double x = getWidth() / 2.0;
double y = getHeight() / 2.0;
aT.rotate(Math.toRadians(angle), x, y);
// g2.transform(aT);
g2.setTransform(aT);
//g2.setClip(oldshape);
super.paintComponent(g);
}
};
lblCorrect.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent arg0) {
lblCorrect.setSize(arg0.getX(),arg0.getY());
}
});
lblCorrect.setBorder(new LineBorder(new Color(0, 0, 0)));
lblCorrect.setBounds(48, 100, 74, 51);
contentPane.add(lblCorrect);
JLabel lblWrong = new JLabel("Wrong"){
@Override
protected void paintComponent(Graphics g) {
int angle = 90;
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
AffineTransform aT = g2.getTransform();
//Shape oldshape = g2.getClip();
double x = getWidth() / 2.0;
double y = getHeight() / 2.0;
aT.rotate(Math.toRadians(angle), x, y);
// g2.transform(aT);
g2.setTransform(aT);
//g2.setClip(oldshape);
super.paintComponent(g);
}
};
lblWrong.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
lblWrong.setSize(e.getX(),e.getY());
}
});
lblWrong.setBorder(new LineBorder(new Color(0, 0, 0)));
lblWrong.setBounds(239, 100, 74, 51);
contentPane.add(lblWrong);
}
}
```