У меня есть программа, в которой у меня есть JWindows, который можно переместить нажатием и перетаскиванием. Просто для информации они прозрачны и имеют синюю границу. Я хотел бы знать координаты верхнего левого угла прямоугольника (границы) после того, как он был перемещен с помощью щелчка и перетаскивания. Когда я нажимаю кнопку в моем gui, вызов будет сделан для captureComponent(), чтобы получить текущую координату x и y в верхнем левом углу окна. Я пытаюсь сделать это с помощью Point loc = this.getLocation(); Когда я размещаю его вне MousePressed, я получаю координату перед ее щелчком и перетаскиванием в другое место. Когда я пытаюсь поместить его внутри MousePressed, чтобы он дал мне обновленные значения, он дает мне ошибку, не могу найти символ: методы getLocation(). Что я могу сделать, чтобы исправить эту проблему, чтобы она дала мне обновленное значение?координаты JWindow после нажатия и перетаскивания
import javax.swing.*;
import java.awt.event.*;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Point;
import javax.swing.border.LineBorder;
//test
public class Box extends JWindow {
JPanel p=new JPanel();
public Box()
{
this.setAlwaysOnTop(true);
this.setBackground(new Color(0, 0, 0, 0));
setContentPane(p);
setSize(50,25);
//this.setLocation(50, 50);
p.setBorder(new LineBorder(Color.blue));
p.setLayout(new FlowLayout());
p.setBackground(new Color(0, 0, 0, 0));
p.addMouseListener(adapter);
p.addMouseMotionListener(adapter);
}
MouseAdapter adapter= new MouseAdapter()
{
int x,y;
public void mousePressed(MouseEvent e)
{
if(e.getButton()==MouseEvent.BUTTON1)
{
x = e.getX();
y = e.getY();
}
}
public void mouseDragged(MouseEvent e)
{
if((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) != 0)
{
setLocation(e.getXOnScreen()-x,e.getYOnScreen()-y);
Point loc = this.getLocation();
}
}
};
public void captureComponent() {
System.out.println(loc);
}
}
Метод captureComponent вызывается из другого класса при нажатии кнопки:
btnSnap.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
JButton clickedButton = (JButton) event.getSource();
if (clickedButton == btnSnap) {
//new captureComponent();
//System.out.println("test");
Box capture = new Box();
capture.captureComponent();
}
}
});
Я правильно понял, что поставил бы это вместо того места, где я поставил Point loc = this.getLocation(); ? Вероятно, основной вопрос, но как я могу распечатать местоположение? Когда я попробую это, я теперь получаю ошибку, не могу найти символ: местоположение переменной. Большое спасибо за вашу помощь – volican
@volican, см. Править. – camickr
Проблема в том, что он не дает мне обновленные координаты после того, как я нажимаю и перетаскиваю поле. Он просто дает то, что первоначально координат, прежде чем я щелкнул и потащил его куда угодно. В коде, который вы упомянули выше, как мне получить значения местоположения x и y за пределами мыши? Я довольно новый, ваша помощь очень ценится! – volican