【发布时间】:2020-08-07 08:38:10
【问题描述】:
我是新来的,我是开发的初学者。我的问题是我在JPanel 内有几个JTextField 控件,这也在JFrame 内,并且文本字段不显示我通过方法传递的文本,我不知道为什么,因为它的来源非常简单。
问题
我想在一对文本字段中显示画布的鼠标坐标。该画布位于像面板一样的框架内,其中包含几个文本字段。我将把 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 以了解它是否获取数据。数据按屏幕显示,但不按文本字段显示。
如果有人知道问题出在哪里,我很乐意告诉我。
【问题讨论】:
-
您创建了一个新面板,但没有将其添加到任何内容中。您可能希望在创建框架时创建面板,然后在显示框架之前将其添加到框架中。当鼠标移动时,在现有面板上调用
mostrarCoordenadas。
标签: java swing jtextfield mouselistener mousemotionlistener