有问题,我有“ 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");
            }

        });

最佳答案

如果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"或类似内容,那么我将告诉您您已修复错误的内容。关键是诸如这些实例字段之类的make关键字字段,这些实例字段以实例方式而非静态方式使用。

09-28 02:44