2013-08-14 5 views
1

Есть проблемы, у меня есть «уС», который изменит все время, когда пользователь нажимает Alt + CНабор JTextField авто изменилось

Вопрос заключается в том, как сделать JTextField изменить значение внутри каждое времени значения yC - это изменения.

yT=new JTextField(5); 
mainframe.add(yT); 
yT.setText(Integer.toString(yC)); 
window.getContentPane().add(mainframe); 
window.pack(); 
window.setVisible(true); 

Как изменить YC:

cor.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent e){ 
       PointerInfo a = MouseInfo.getPointerInfo(); 
       Point b = a.getLocation(); 
       xC = (int) b.getX(); 
       yC = (int) b.getY(); 
       textArea.replaceSelection("X-Coordinates:" + xC + " Y-Coordinates: " + yC + "\n"); 
      } 

     }); 
+0

Что вы пробовали? И можете ли вы добавить свой код для того, как вы меняете yC на нажатие клавиши? –

+0

Имейте, редактируйте, проверьте еще раз) – LoL

+0

Я предполагаю, что yC - это числовое поле, такое как int или double поле, удерживаемое классом. Если это так, один способ разрешить другим уведомлениям об изменениях в его значении - сделать это «связанным» поле через PropertyChangeListenerSupport. Только изменение yC с помощью метода setter, и в этом методе setter, объект PropertyChangeListenerSupport уведомляет всех слушателей. Обратите внимание, что если yC находится в том же классе, что и ваше поле JText, ваша работа стала проще - просто измените JTextfield в методе set yC. –

ответ

2

Если уС и уг находятся в том же классе, то ваша работа становится проще. Рассмотрим давая YC сеттер метод:

public void setYC(int yC) { 
    this.yC = yC; 
    yT.setText(String.valueOf(yC)); 
} 

И тогда никогда набор YC непосредственно, но вместо этого всегда через метод сеттер.


Редактировать
Одна проблема у вас с вашим кодом, вы связаны здесь:

public class Test { 

    static JTextField curTimeH, curTimeM, curTimeS, xT, yT; 
    Timer timer; 
    Robot robot = new Robot(); 
    static JFrame window; 
    static JPanel mainframe; 
    static JFrame frameRes; 
    static JTextArea textArea; 
    static int xC, yC; 

Все статические поля должны быть выше экземпляра поля, или не- статические поля. Если вы заявите, что сделали это, потому что компилятор жаловался на "Cannot make a static reference to the non-static field window" или что-то подобное, я скажу вам, что вы исправили неправильную вещь. Ключ состоит в создании ключевых полей, таких как эти поля экземпляра, которые используются в некотором роде, а не в статическом виде.

+0

Я понимаю, идея о том, как это сделать, но все же может получить, как реализовать это для того, что я делаю ( – LoL

+0

http://pastie.org/8237355 – LoL

+0

@LoL: если все еще застрял, тогда вы можете захотеть создайте и опубликуйте [sscce] (http://sscce.org), чтобы мы могли испытать вашу проблему из первых рук. Иначе мы будем вынуждены угадать, что может быть неправильным с вашим кодом. –

Смежные вопросы