这是我的代码,其输出如下图所示。
我需要在mousePressed()
方法之外获取x_coor和y_coor的值。但我无法做到。我到目前为止已经尝试了
在Constructor
。
将变量声明为全局变量。
将变量声明为静态。
在main()
中声明变量。
但到目前为止我还没想到。
注意:请勿提及我已经知道的问题。我需要解决方案
public class Tri_Angle extends MouseAdapter {
Tri_Angle(){
// int x_coor=0;
// int y_coor=0;
}
public static void main(String[] args) {
JFrame frame = new JFrame ();
final int FRAME_WIDTH = 500;
final int FRAME_HEIGHT = 500;
frame.setSize (FRAME_WIDTH, FRAME_HEIGHT);
frame.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent me) {
int x_coor= me.getX();
int y_coor= me.getY();
System.out.println("clicked at (" + x_coor + ", " + y_coor + ")");
}
});
frame.setTitle("A Test Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//This is what i want to do, but it does not know x_coor variable here.
if(x_coor>=0)
{
System.out.println("clicked at (" + x_coor + ", " + y_coor + ")");
}
}
}
答案 0 :(得分:1)
x_coor和y_coor是您定义的mousePressed函数中定义的局部变量。由于它们是该函数的本地函数,因此您无法在该函数之外访问它们。正如您尝试的那样。
您可以将它们声明为成员变量,并编写MouseAdapter mousePressed覆盖例程来更新它们。然后,您希望将Tri_Angle对象作为mouseListener添加到帧中,而不仅仅是mouseListener对象。例如:
public class Tri_Angle extends MouseAdapter {
int x_coor, y_coor;
Tri_Angle()
{
x_coor = 0;
y_coor = 0;
}
@Override
public void mousePressed(MouseEvent me)
{
x_coor = me.getX();
y_coor = me.getY();
}
public static void main(String[] args)
{
// code...
frame.addMouseListener(new Tri_Angle());
// Access x_coor and y_coor as needed
}
另请注意,主例程中的if(x_coor> = 0)语句只会运行一次(朝向程序的开头)。每次按下鼠标时都不会运行。如果你想在每次按下鼠标时运行一些东西,那就需要在你的mousePressed例程中。
答案 1 :(得分:0)
在main方法中声明变量并初始化
public class Tri_Angle extends MouseAdapter {
.....
public static void main(String[] args) {
int x_coor =0 , y_coor=0;
......
}
.....
}