【问题标题】:JSpinner ActionListener alternativeJSpinner ActionListener 替代品
【发布时间】:2013-04-21 01:12:33
【问题描述】:

在我的程序中,我想使用 JSpinner 来获取数字。这个数字稍后将用于计算某些东西。每次用户单击其中一个微调器按钮(向上或向下)时,我都希望结果自动更新。由于您无法将 ActionListener 添加到 JSpinner (我认为这很奇怪),我在这里问如何做类似的事情(我已经为此准备好了 ActionListener,可以在任何其他侦听器中更改当然)。

【问题讨论】:

标签: java swing event-handling awt


【解决方案1】:

每次用户点击一个微调按钮(向上或向下)时,我希望结果自动更新。

DocumentListener 添加到用作微调器编辑器的文本字段的Document

编辑:

JSpinner.DefaultEditor editor = (JSpinner.DefaultEditor)number.getEditor();
JTextField textField = editor.getTextField();
textField.getDocument().addDocumentListener( new DocumentListener()
{
    public void insertUpdate(DocumentEvent e)
    {
        System.out.println("insert");
    }

    public void removeUpdate(DocumentEvent e)
    {
        System.out.println("remove");
    }

    public void changedUpdate(DocumentEvent e) {}
});

【讨论】:

  • 喜欢这个? ((JSpinner.DefaultEditor)spinner.getEditor()).getTextField().getDocument().addDocumentListener(new DocumentListener() {...} 好像不行……
  • @Creator13,是的,这是通用代码。对我来说很好。虽然 ChangeListener 是要走的路。
【解决方案2】:

您可以将ChangeListener 添加到微调器。这将由按下按钮(或直接编辑字段)触发。

spinner.addChangeListener(new ChangeListener() {      
  @Override
  public void stateChanged(ChangeEvent e) {
    // handle click
  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-29
    • 2011-06-10
    • 2014-04-18
    • 2012-04-08
    • 2012-07-09
    • 2011-03-31
    • 2023-03-12
    • 2017-02-26
    相关资源
    最近更新 更多