Java 设置JTextField自动更改

Java 设置JTextField自动更改,java,swing,set,jtextfield,Java,Swing,Set,Jtextfield,有一个问题,我有“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(

有一个问题,我有“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一个SETER方法:

public void setYC(int yC) {
   this.yC = yC;
   yT.setText(String.valueOf(yC));
}
然后从不直接设置yC,而是通过setter方法始终设置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;

上面的所有静态字段都应该是实例字段或非静态字段。如果您声明这样做是因为编译器抱怨
“无法对非静态字段窗口进行静态引用”
或类似的内容,那么我将告诉您,您修复了错误的内容。关键是使关键字段(例如这些实例字段)以实例排序的方式使用,而不是以静态排序的方式使用。

您尝试了什么?你们能添加你们的代码来说明你们是如何在按键时改变yC的吗?进行编辑,再次检查)我假设yC是一个数字字段,比如一个类持有的int或double字段。如果是这样,允许其他类收到其值更改通知的一种方法是通过PropertyChangeListenerSupport将其设置为“绑定”字段。仅通过setter方法更改yC,并且在此setter方法中,让PropertyChangeListenerSupport对象通知所有侦听器。请注意,如果yC与您的JTextfield在同一个类中,那么您的工作就会变得更简单——只需更改yC的setter method.yC中的JTextfield,以及在同一个类中但在不同方法中如何更改yC的方法。我理解如何做到这一点的想法,但仍然可以获得如何实现这一点的方法(@LoL:如果仍然卡住,那么您可能希望创建并发布一个实例,让我们直接体验您的问题。否则,我们将被迫猜测您的代码可能有什么问题。@LoL:最好将代码压缩到最小的可编译可运行示例中,该示例没有与您的问题无关的代码,也没有可编译性和运行所需的代码然后把它贴在你的问题里。