1

有问题,我有“ yC ”,当用户按 alt + C 时,它会一直改变

问题是如何让 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");
            }

        });
4

1 回答 1

2

如果 yC 和 yT 在同一个班级,那么你的工作就会变得更容易。考虑给 yC 一个 setter 方法:

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

然后永远不要直接设置 yC,而是总是通过它的 setter 方法。


编辑
您链接到的代码的一个问题是:

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"或类似的事情,那么我会告诉您您修复了错误的事情。关键是使关键字段(例如这些实例字段)以实例方式而不是以静态方式使用。

于 2013-08-14T21:51:40.170 回答