- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读有关 Swing Timers 的文章,该示例看起来与我尝试做的完全不同,因此我发现将其应用于我的程序在逻辑上令人困惑。 我开始觉得我什至不需要计时器。
这是我正在尝试做的事情:
我正在制作一个 JFrame 程序,让用户将信用卡号输入到 JTextField 中。在他们这样做之前,有一个 JLabel,上面写着“请在文本字段中输入您的号码”,然后一旦他们将其输入该字段并按回车键,取决于我的代码是否确定卡号有效, JLabel 将变为“无效”或“谢谢处理”。
但是,我没有找到一种方法让它基于文本进行更改,但没有成功,它似乎只是停留在我最初给它的任何文本上。
所以有人可以查看我的代码并更改它以执行我的要求吗?那太好了。你们过去曾提供过帮助。
public class CreditGraphics {
public String cardNum;
public JFrame frame;
public JPanel panel;
public JLabel label;
public JTextField text;
public Timer timer;
public CreditGraphics() {
frame = new JFrame("HI");
panel = new JPanel();
label = new JLabel();
text = new JTextField(16);
panel.add(label);
panel.add(text);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setPreferredSize(new Dimension(500, 500));
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
label.setText("Hi");
label.setText("Hello");
text.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cardNum = text.getText();
timer = new Timer(2000,this);
timer.setInitialDelay(1000);
timer.start();
}
});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new CreditGraphics();
}
});
}
public void checkCard(){
}
}
最佳答案
您的 Timer 的 ActionListener 存在一些主要问题,因为它正在将匿名内部 ActionListener 对象,即 Timer 的构造函数中的 this
添加到自身。所以它会在 Timer 内部调用与启动 Timer 的 JButton 调用的完全相同的 actionPerformed —— 相当困惑。如果您的程序需要一个计时器,您最好确保为其提供自己的 ActionListener,而不是您现在添加到 JButton 的同一个 ActionListener。
最重要的是,您甚至需要 Swing Timer 吗?我不这么认为,因为您似乎不希望每 xxx 毫秒重复发生一次 Action ,或者在 xxx 毫秒后发生一次 Action ,并且您只想更改文本。我建议您只是在匿名内部 ActionListener 类中更改 JLabel 的文本,然后就这样保留它。如果您的要求不同,那么您需要澄清并扩展您的问题。
所以在半伪代码中,类似于:
public void actionPerformed(ActionEvent e) {
String userText = text.getText();
if (testIfTextValid(userText)) { // some method to test if input OK
label.setText(INPUT_VALID); // String constant for JLabel to display
// here pass the userText to other parts of your code that needs to use it
} else {
label.setText(INPUT_INVALID);
}
}
关于java - HoneSTLy 对如何将 Swing Timers 应用到我的程序感到困惑,有人可以看看吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25024115/
我正在尝试学习Rust。我正在阅读一本书online,该书实现了unix程序cat。现在,我试图读取作为像cargo run file1.txt file2.txt这样的参数传递的文件的内容,但是程序
我在 GHC 8.0.1 中遇到了一个带有种类索引 (?) GADT 的奇怪情况,其中在类型与种类签名中引入 foralls 会产生不同的类型检查行为。 考虑以下数据类型: {-# LANGUAGE
我正在使用 Perl 5.10 开发应用程序,HTML::Mason和 Apache 2.2。这是我第一次在大型项目中使用 Perl 5.10。我每隔一段时间就会出现奇怪的行为。应用程序因一个非常奇怪
我正在尝试将文件上传到aws中的rust中,因为我使用的是 rusoto_s3 的s3 rust客户端,当这些部分从单个线程发送时,我设法使分段上传代码正常工作不是我想要的,我想上传大文件,并且希望能
我是一名优秀的程序员,十分优秀!