gpt4 book ai didi

java - SpinnerNumberModel 的 PropertyChangeSupport

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:26 25 4
gpt4 key购买 nike

我想监听一个 JSpinner 的 SpinnerNumberModel 值的变化。
我创建一个 PropertyChangeSupport 并将模型放入其中。

我需要 propertyChangeListener,因为它显示属性的旧值和新值。

该代码段不起作用:当我单击 JSpinner 时,propertyChange 方法不打印任何内容。
一个简单的 ChangeListener 只提供新值,但我还需要旧值,我怎样才能得到它?

package de.unikassel.jung;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

import javax.swing.JFrame;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;

public class PropertyChangeTest implements PropertyChangeListener {

public static void main(String[] args) {
new PropertyChangeTest();
}

public PropertyChangeTest() {
JFrame frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

int value = 1;
int min = 0;
int max = 10;
int step = 1;
SpinnerNumberModel spinnerModel = new SpinnerNumberModel(value, min, max, step);

PropertyChangeSupport pcs = new PropertyChangeSupport(spinnerModel);
pcs.addPropertyChangeListener("value", this);

JSpinner spinner = new JSpinner(spinnerModel);
frame.getContentPane().add(spinner);
frame.setVisible(true);
}

@Override
public void propertyChange(PropertyChangeEvent evt) {
System.out.println(evt);
System.out.println(evt.getSource());
}

}

最佳答案

不听模特,听小编的JFormattedTextField ,如下所示。

JSpinner spinner = new JSpinner(new SpinnerNumberModel(1, 0, 10, 1));
JSpinner.DefaultEditor editor = (JSpinner.DefaultEditor) spinner.getEditor();
editor.getTextField().addPropertyChangeListener("value", this);

关于java - SpinnerNumberModel 的 PropertyChangeSupport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6969740/

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