如何在JPanel中显示鼠标坐标

时间:2014-04-09 15:23:17

标签: java jpanel jlabel

    JLabel x_label = new JLabel("");
    x_label.setHorizontalAlignment(SwingConstants.CENTER);
    x_label.addMouseListener(simple_widget);
    x_label.setText(simple_widget.stringInfo);
    info_panel.add(x_label);

我无法在JLabel上显示鼠标的x,y坐标。上面是我的标签,下面是鼠标小部件。 x_label.setText(simple_widget.stringInfo);似乎不能显示坐标。

private FrameView frame_view;
public String stringInfo;


public SimpleFrameViewWidget(Frame f) {
    setLayout(new BorderLayout());

    frame_view = new FrameView(f);
    frame_view.addMouseListener(this);
    add(frame_view, BorderLayout.CENTER);

    JLabel title_label = new JLabel(f.getTitle());
    add(title_label, BorderLayout.SOUTH);
}

@Override
public void mouseClicked(MouseEvent e) {
    int x = e.getX();
    int y = e.getY();

    String stringInfo = "X: " + x + "Y: " + y;
}

2 个答案:

答案 0 :(得分:0)

您创建了一个名为stringInfo的String,其中包含您想要的内容,但您从未使任何UI组件显示它。

创建stringInfo后,尝试让其中一个JLabel显示如下:

someJLabelIMade.setText(stringInfo);

你还有两个stringInfo,一个局部变量和一个公共实例变量,给定你现在想要做的事情你不需要实例变量。

答案 1 :(得分:0)

此方法

@Override
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();

String stringInfo = "X: " + x + "Y: " + y;
}

应该是这样的

@Override
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();

stringInfo = "X: " + x + "Y: " + y;
}

您正在方法中重新声明stringInfo,因此原始stringInfo为null。 如果这不能解决你的问题,你可以发布完整的代码吗?