如何设置特定时间的jbutton图标以显示它何时被点击以及如何在时间结束时消失图标

时间:2017-01-31 06:07:04

标签: java swing jbutton

当我点击设置按钮图标时,如何将设置定时器的java代码编码到我的按钮,并且当我的按钮图标必须显示时,图标必须为时间结束设置为空。

我尝试过以下方式,但是当我不点击按钮

时它就可以了
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         


  timer = new Timer(5000, new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if(chromeShown) {
                    jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/r/ajaxloading.gif")));
                    chromeShown = true;
                } else {
                    jButton3.setIcon(null);
                    chromeShown = false;
                }
            }
        });
        timer.start();

        this.getContentPane().add(JButton);
        this.setVisible(true);

1 个答案:

答案 0 :(得分:2)

根据我对你的问题的理解,你的逻辑有点偏差,行动应该遵循类似的行为

按钮单击 - >图标已更改 - >计时器开始...(等待)...... - >定时器触发 - >图标已更改。

目前,您正在尝试更改Timer中图标的初始状态,这没有任何意义。我想你想做更像这样的事情......

click.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        click.setEnabled(false);
        click.setText("I'm running >>");
        Timer timer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                click.setText("I be done");
                click.setEnabled(true);
            }
        });
        timer.start();
    }
});

基本上,单击按钮时,会设置按钮的文本并禁用按钮(因此您无法再次单击它),1秒后,它会更改文本并启用按钮