gpt4 book ai didi

java - 您可以链接两个 JFormattedTextField 的值吗?

转载 作者:行者123 更新时间:2023-12-02 07:15:31 25 4
gpt4 key购买 nike

我有一个带有 2 个 JFormattedTextFields 的界面,我需要它们的值(不仅仅是显示的文本)相同。理想情况下,它们都应该是可编辑的,其中一个的更改会反射(reflect)在另一个中。

我一开始只是在两者之间共享一个文档,但很快就遇到了一个问题,即这只链接显示的文本,而不链接底层值。 (愚蠢的我!)
我还没有尝试为“value”属性添加相互的 PropertyChangeListeners,因为我希望这会设置无限循环的修改。

我错过了什么吗?有什么方法可以做到这一点吗?或者我是否坚持只允许用户编辑两者之一并且只让值沿一个方向传播?

谢谢!

最佳答案

I need the values (not just the displayed text) to be identical. Ideally they should both be editable, with a change in one being mirrored in the other.

enter image description here

import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class TextLabelMirror {

private JPanel mainPanel = new JPanel();
private JTextField field = new JTextField(20);
private JTextField field1 = new JTextField(20);

public TextLabelMirror() {
field.getDocument().addDocumentListener(new DocumentListener() {

@Override
public void changedUpdate(DocumentEvent e) {
updateLabel(e);
}

@Override
public void insertUpdate(DocumentEvent e) {
updateLabel(e);
}

@Override
public void removeUpdate(DocumentEvent e) {
updateLabel(e);
}

private void updateLabel(DocumentEvent e) {
java.awt.EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
field1.setText(field.getText());
}
});
}
});

mainPanel.setLayout(new GridLayout(1, 0, 10, 0));
mainPanel.add(field);
mainPanel.add(field1);
}

public JComponent getComponent() {
return mainPanel;
}

private static void createAndShowUI() {
JFrame frame = new JFrame("TextLabelMirror");
frame.getContentPane().add(new TextLabelMirror().getComponent());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
createAndShowUI();
}
});
}
}

关于java - 您可以链接两个 JFormattedTextField 的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14980090/

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