У меня проблемы с работой. Я создал игру, в которой у меня есть питание, которое позволяет изменять размер окна на несколько секунд. Все работает отлично, и окно идет от того, чтобы не изменять размер, чтобы быть изменчивым в течение нескольких секунд. То, что должно было произойти, после нескольких секунд, окно должно прекратить принимать входные данные для изменения размера окна (IE: не следует изменять размер). Единственная проблема заключается в том, что всякий раз, когда он должен быть настроен на неизменяемость, если вы держите курсор в окне, чтобы изменить его размер, он сохраняет размер. После того, как вы отпустите окно, он активирует состояние без изменения размера окна. Мой вопрос: как мне это сделать, прежде чем вы отпустите окно, убрав контроль над изменением размера, как только таймер будет поднят?
Вот упрощенный случай: (вам предоставляется 6 секунд, чтобы изменить размер окна и играть с ним)
package test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.Timer;
public class Test {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
JFrame testFrame = new JFrame();
testFrame.setResizable(true);
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
long endingTime = System.currentTimeMillis() + 6000;
Timer testTimer = new Timer(100, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if((endingTime - System.currentTimeMillis()) < 0){
testFrame.setResizable(false);
}
}
});
testFrame.setVisible(true);
testTimer.start();
}
}
Используйте класс Java Robot
чтобы заставить выпустить мышь. Я изменил ваш пример кода ниже:
public static void main(String[] args) {
JFrame testFrame = new JFrame();
testFrame.setResizable(true);
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Timer testTimer = new Timer(6000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
testFrame.setResizable(false);
Robot r;
try {
r = new Robot();
r.mouseRelease( InputEvent.BUTTON1_DOWN_MASK);
} catch (AWTException ex) {
ex.printStackTrace();
}
}
});
testFrame.setVisible(true);
testTimer.start();
}