停止在JTextField中键入后如何启动函数。并非每个关键版本。如果两个键的释放时间差大于1秒,则它将运行此功能。否则,请等待1秒钟。
使用Swing Timer
和a DocumentListener
每次Document
更新时,重置Timer
看看如何使用Swing计时器和侦听文档中的更改以了解更多详细信息
作为一个简单的例子…
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
public TestPane() {
JTextField field = new JTextField(20);
JLabel label = new JLabel("Waiting");
DeferredDocumentListener listener = new DeferredDocumentListener(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Execute your required functionality here...
label.setText(label.getText() + ".");
}
}, true);
field.getDocument().addDocumentListener(listener);
field.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
listener.start();
}
@Override
public void focusLost(FocusEvent e) {
listener.stop();
}
});
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
add(field, gbc);
add(label, gbc);
}
}
public class DeferredDocumentListener implements DocumentListener {
private final Timer timer;
public DeferredDocumentListener(int timeOut, ActionListener listener, boolean repeats) {
timer = new Timer(timeOut, listener);
timer.setRepeats(repeats);
}
public void start() {
timer.start();
}
public void stop() {
timer.stop();
}
@Override
public void insertUpdate(DocumentEvent e) {
timer.restart();
}
@Override
public void removeUpdate(DocumentEvent e) {
timer.restart();
}
@Override
public void changedUpdate(DocumentEvent e) {
timer.restart();
}
}
}
我试图找出如何使python停止接受输入后一定数量的时间。 到目前为止,我已经得到了工作,但不会停止程序,直到用户按下回车键。如果有关系,我在蟒蛇提示符中运行这个文件。 换句话说,我想做一些东西,这样Python就不会再等待输入了。如果用户在计时器结束前输入了任何东西,程序运行正常,这很好,除非玩家什么也没输入。如果他们甚至不按回车键,那么整个过程就会停止。(我也是Python的绝对初学者。事实上
问题内容: 我正在使用我的应用程序拨打电话。 一段时间后有什么办法可以终止通话?还是在ACTION_CALL开始之前设置一个计时器? 我正在使用Prasanta博客中的以下代码,但由于某些原因,导致出现以下错误。有什么建议? 无法解决 问题答案: 您的问题已被问过很多次了。简短的答案是,没有官方的方法可以做到这一点。 在一个问题中,有人建议打开飞行模式(应用程序当然需要权限才能执行此操作)。这很粗
问题内容: 我很难找到一种方法来启动,停止和重新启动Java中的线程。 具体来说,我在中有一个类Task(当前实现)。我的主应用程序需要能够在线程上启动此任务,在需要时停止(杀死)该线程,有时还可以杀死并重新启动该线程… 我的第一次尝试是与,但我似乎找不到办法重新启动任务。当我使用任何将来的呼叫失败时,因为是“关机” … 那么,我该怎么做呢? 问题答案: 一旦线程停止,你将无法重新启动它。但是,没
我试图用systemctl配置Tomcat8.5.37,以在Ubuntu16.04上作为守护进程启动服务器。 为此,我在/etc/systemd/system/tomcat8.service创建了以下服务文件: Tomcat服务器是直接从apache下载的,并且只进行了解压缩。JDK是最新的Oracle JDK1.8。 当我通过startup.sh直接启动tomcat时,一切都很好。但是当我使用s
我想在我停止在输入文本框中键入字符(而不是在键入字符时)后触发一个事件。 我尝试过: 但是这个例子为每个输入的字符产生一个超时,如果我输入20个字符,我会收到大约20个AJAX请求。 在这个小提琴上,我用一个简单的警报而不是AJAX来演示同样的问题。 有解决办法吗,还是我只是用了一个糟糕的方法?
我无法停止。它的样式是。如何启动和停止圆形的小型?