Не могу сообразить, как соорудить следующую вещь.
private volatile ComponentEvent ce;
public void go(JFrame thisFrame, String string, ImageIcon icon) {
thisFrame.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
System.out.println("componentResized");
ce = e;
Thread myThread = new Thread(new Runnable() {
@Override
public void run() {
changePosition(e);
}
});
myThread.start();
}
@Override
public void componentMoved(ComponentEvent e) {
System.out.println("componentMoved");
ce = e;
Thread myThread = new Thread(new Runnable() {
@Override
public void run() {
changePosition(e);
}
});
myThread.start();
}
});
}
private synchronized void changePosition(ComponentEvent e) {
try {
Thread.sleep(10);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println(ce.getComponent().getX() + " " + ce.getComponent().getY());
}
И результат в консоли при componentMoved/componentResized:
componentMoved
componentMoved
componentMoved
186 189
componentMoved
componentMoved
183 186
183 186
183 186
183 186
Можно ли как ни будь сделать что бы после Thread.sleep(10)
метод sysout
выполнился только 1 раз с текущими реальными данными, а все потоки которые я создал(myThread.start()
), кроме того что сейчас юзает changePosition
, были убиты?
Короче, мне нужно пересчитывать много чего в зависимости от положения окна и его размеров, не хочу обсчитывать это стопицот раз, если достаточно 1-го.
У меня есть приложение с чатомКаждый раз, когда в чате приходит сообщение надо проигрывать определённый звук
Перебираю элементы итератором по css локаторам
Кто знает, как написать метод, который будет высчитывать сколько времени назад пользователь сделал то, или иное действие, и будет возвращать...