gpt4 book ai didi

Java 焦点事件监听器

转载 作者:行者123 更新时间:2023-11-29 04:46:16 25 4
gpt4 key购买 nike

我想知道如何添加获得焦点的事件监听器。

目前我有一个鼠标事件正在添加到我的J文本区域

   //=======================================================
// mouse drag event
//=======================================================

public static class genDrag extends MouseMotionAdapter {
JTextArea textarea;

// receive textarea as argument
public genDrag(JTextArea argTextarea) {
textarea = argTextarea;
}

// add drag functionality to argument
public void mouseDragged(MouseEvent E) {
Point p = SwingUtilities.convertPoint(textarea, E.getPoint(), gc_gui.cv_content);
textarea.setBounds((p.x - 40), (p.y - 15), 100, 30);
}
}

然后我可以调用它

   //=======================================================
// apply mouse event
//=======================================================
JTextArea textarea = new JTextArea();
textarea.setBounds(50, 50, 100, 30);
textarea.addMouseMotionListener(new genDrag(textarea));

这很好用,但我一直无法重现focusGained 事件的功能

   //=======================================================
// mouse focus event
//=======================================================

public static class genFocus extends EventListener {
JTextArea textarea;

public genFocus() {
textarea = argTextarea;
}

public void focusGained(FocusEvent E) {
System.out.println("Focus Triggered");
}
}

上面看起来一点都不开心

更新代码

static gui classGui;

public static void main(String[] args) {

classGui = new gui();

classGui.textarea.addMouseMotionListener(
new genDrag(classGui.textarea)
);

classGui.textarea.addFocusListener(
new genFocus(this)
);

classGui.frame.setVisible(true);

public static class gui {
JFrame frame;
JPanel panel;
JTextArea textarea;

public gui() {
frame = new JFrame();
// configure JFrame here

panel = new JPanel();
// configure JPanel here

textarea = new JTextArea();
textarea.setBounds(50, 50, 100, 30);

frame.add(textarea);
}

}

public static class genDrag extends MouseMotionAdapter {
JTextArea textarea;

public genDrag(JTextArea argTextarea) {
textarea = argTextarea;
}

public void mouseDragged(MouseEvent E) {
Point p = SwingUtilities.convertPoint(textarea, E.getPoint(), gc_gui.cv_content);
textarea.setBounds((p.x - 40), (p.y - 15), 100, 30);
}
}

public static class genFocus implements FocusListener {
JTextArea textarea;

public genFocus(JTextArea argTextarea) {
textarea = argTextarea;
}

public void focusGained(FocusEvent E) {
System.out.println("Focus gained");
}

public void focusLost(FocusEvent E) {
System.out.println("Focus lost");
}
}

}

最佳答案

要处理焦点事件,您的处理程序需要实现FocusListener 接口(interface)而不是EventListener。请注意,您需要通过 addFocusListener 添加此处理程序。我不认为你这样做了,因为如果你这样做了,你会得到一个编译器错误,指出哪里出了问题。

使用 @Override 注释有助于发现此类错误。把它放在你认为应该覆盖父方法的每个方法之上。如果这样的方法实际上没有覆盖另一个方法,编译器将抛出错误。这样您就可以获悉错误,而不是您的程序默默地失败。

关于Java 焦点事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36998056/

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