Я изменил код на более подробную версию, чтобы вы могли лучше понять мою проблему.
Мне нужно «посмотреть» целочисленное значение и немедленно реагировать на его изменение. На данный момент лучший способ, который я нашел, - это использование потока в бесконечном цикле.
Ниже приведена значительно упрощенная часть моего проекта. Подводя итог, можно сказать, что дляtificationValue устанавливается значение 1 одним нажатием кнопки в моем классе Bubble. Мне нужно, чтобы апплет мог отслеживать это значение уведомления и отвечать каждый раз, когда он изменяется.
Вот мой апплет:
public class MyApplet extends JApplet
{
Bubble myBubble = new Bubble();
public void run()
{
new Thread(
new Runnable() {
public void run() {
while(true) {
if(myBubble.getNotificationValue() == 1) {
/* here I would respond to when the
notification is of type 1 */
myBubble.resetNotificationValue;
}
else if(myBubble.getNotificationValue() == 2) {
/* here I would respond to when the
notification is of type 2 */
myBubble.resetNotificationValue;
}
else if(myBubble.getNotificationValue() != 2) {
/* if it is any other number other
than 0 */
myBubble.resetNotificationValue;
}
// don't do anything if it is 0
}
}
}).start();
}
}
А вот и мой класс:
public class Bubble extends JPanel
{
public JButton bubbleButton;
public int notificationValue = 0;
public int getNotificationValue()
{
return notificationValue;
}
public void resetNotificationValue()
{
notificationValue = 0;
}
protected void bubbleButtonClicked(int buttonIndex)
{
notificationValue = buttonIndex;
}
public Bubble()
{
bubbleButton = new JButton();
bubbleButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event)
{
bubbleButtonClicked(1);
}
});
}
}
Но очевидно, что это поддерживает процессор на 100% и совсем не эффективен. Что было бы лучшим способом сделать это? (Предположим, я не могу изменить ни один из методов, ответственных за изменение целого числа.)