gpt4 book ai didi

java - 如何在几个 JTextField 中显示鼠标的坐标?

转载 作者:行者123 更新时间:2023-12-02 08:40:54 25 4
gpt4 key购买 nike

我是新来的,我是开发方面的初学者。我的问题是,我在 JPanel 内有几个 JTextField 控件,该控件也在 JFrame 内,并且文本字段不显示我通过一个方法传递的文本,我不知道为什么,因为它的来源非常简单。

问题

我想显示在一对文本字段中获得的 Canvas 的鼠标坐标。该 Canvas 位于一个像面板一样的框架内,其中包含几个文本字段。我将把 Canvas 的源代码放在这里,在 MouseMotionListener 中引用它。

public void addPosicionPuntero(){        

addMouseMotionListener(new MouseMotionAdapter(){

@Override
public void mouseMoved(MouseEvent evento){

x1 = evento.getX();
y1 = evento.getY();
updateUI();
panelCoordenadas pC = new panelCoordenadas();
pC.mostrarCoordenadas(x1,y1);
System.out.println(x1 + " --- " + y1);
}

@Override
public void mouseDragged(MouseEvent evento){
mouseMoved(evento);
}
});
}

好吧,现在在其他类中包含文本字段的面板。

public class panelCoordenadas extends javax.swing.JPanel{    

JTextField txfX = new JTextField("X");
JTextField txfY = new JTextField("Y");


public panelCoordenadas() {

this.setSize(100, 100);
//this.setBounds(60,50,100,60);
this.setLocation(50, 50);
this.setBackground(Color.yellow);
JLabel coordX = new JLabel("coordX");
JLabel coordY = new JLabel("coordY");
add(coordX);
add(coordY);

txfX.setEditable(false);
txfY.setEditable(false);
txfX.setSize(40, 20);
txfY.setSize(40, 20);
add(txfX);
add(txfY);
}

public void mostrarCoordenadas(int x, int y){
txfX.setText(String.valueOf(x));
txfY.setText(String.valueOf(y));
System.out.println("mostrarCoordenadas = " + x + " --- " + y);
updateUI();
}
}

我放置了一个 System.out 来了解它是否获取了数据。数据显示在屏幕上,但不显示在文本字段中。

如果有人知道问题是什么,我很乐意告诉我。

最佳答案

类名称不应以小写字符开头。你在 JDK 中见过这样的类吗?通过示例学习。

所以“panelCoordenadas”应该是PanelCoordenadas

updateUI();

那是不需要的。当 LAF 更改时,Swing 在内部使用该方法。您无需在应用程序代码中调用它。

JLabel coordX = new JLabel("coordX");
JLabel coordY = new JLabel("coordY");
add(coordX);
add(coordY);

在类的构造函数中,您创建组件并将组件添加到面板中。那很好。现在您的面板可以显示组件了。

在你的 MouseListener 中你有:

        panelCoordenadas pC = new panelCoordenadas();
pC.mostrarCoordenadas(x1,y1);

因此,您创建了一个面板,但对该面板不执行任何操作。该面板只是留在内存中。您不将其添加到框架中。这种做法是错误的。

不要继续创建 PanelCoordenadas 类的新实例。

您可以在创建其他组件的主类中创建一个 PanelCoodenadas 类的实例并将其添加到框架中。如果要更新该实例的文本字段,则需要将该变量作为参数传递给定义 MouseListener 的类。

关于java - 如何在几个 JTextField 中显示鼠标的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61397075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com