gpt4 book ai didi

java - Swing JTextField 进行文本更改

转载 作者:行者123 更新时间:2023-12-01 22:14:35 24 4
gpt4 key购买 nike

我正在开发 Swing 表单。当用户更改 TextField 中的文本时,我想从其他字段获取输入,进行一些计算,然后显示结果。我怎样才能做到这一点?

这是我到目前为止所拥有的:

jTextField3.addKeyListener(

new KeyAdapter() {
public void keyTyped(KeyEvent e){
char c = e.getKeyChar();
if('0'<=c && c<='9') {
String a = jTextField6.getText().toString();
String l = jTextField7.getText().toString();
int m = Integer.parseInt(a);
int n = Integer.parseInt(l);
jTextField13.setText("" + m*n);
}
}
});

最佳答案

如果您想监视一个或多个文本字段的更改,您应该使用 DocumentListener,这还将向您提供用户何时将文本粘贴到字段中或字段被更改的通知。以编程方式更改(通过调用 setText)

例如...

Bunnies

import java.awt.EventQueue;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class Text {

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

public Text() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}

public class TestPane extends JPanel {

public TestPane() {
setLayout(new GridBagLayout());

JTextField field1 = new JTextField(10);
JTextField field2 = new JTextField(10);
JTextField field3 = new JTextField(10);

DocumentListener dl = new DocumentListener() {

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

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

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

protected void updateFieldState() {
String text = field1.getText() + " " + field2.getText();
field3.setText(text);
}
};

field1.getDocument().addDocumentListener(dl);
field2.getDocument().addDocumentListener(dl);
field3.setEditable(false);

add(field1);
add(field2);
add(field3);
}

}

}

现在,您似乎正在尝试限制可以在字段中输入的字符。您可以使用 JSpinnerJFormattedTextField,但这些仅提供后期验证。

对于实时验证,您应该使用DocumentFilter,它允许您在将输入字段应用到底层Document之前拦截输入的内容。

参见Implementing a DocumentFilterDocumentFilter examples了解更多详情

关于java - Swing JTextField 进行文本更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31351878/

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