1

問題があります。ユーザーが alt + C を押すと常に変化する" yC " があります。

問題は、値 yC が変更されるたびに JTextField の内部の値を変更する方法です。

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 メソッドを介して設定します。



あなたがリンクしたコードであなたが持っている1つの問題はここにあります

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 に答える