gpt4 book ai didi

java - 如何为 JTextField 创建一个通用的 setter?

转载 作者:行者123 更新时间:2023-11-30 08:51:51 24 4
gpt4 key购买 nike

我可以通过这样做公开一个私有(private)的 JTextField:

public void setTextField(String value) {
someTF.setText(value);
}

如果我有很多 JTextFields,工作量会很大。我尝试这样做但失败了。没有错误,只是没有在指定的 JTextField 上设置正确的值。

public class SomeView {

private JTextField someTF = new JTextField(10);
...

public void initComponents() {
...
}

public void setTextField(JTextField jTF, String value) {
jTF.setText(value);
}
}

public class SomeViewTable implements ...{

public void mousePressed(MouseEvent e) {
if (e.getSource() == someButton) {
JTextField someTF = new JTextField(10);
String value = "Some Value";
SomeView sv = new SomeView();
sv.initComponents();

sv.setTextField(someTF, value);
}
}
}

当我调用方法 sameTextField 时,我希望在 SomeView 类中发生这种情况

someTF.setText("Some Value");

这可能吗,我在这里违反了 java 中的哪些规则?

最佳答案

在您的监听器中,您正在创建一个局部变量:

JTextField someTF = new JTextField(10);
...
sv.setTextField(someTF, value);

但是你想要的是设置SomeView的文本字段。所以删除第一行,并将第二行替换为:

sv.setTextField(sv.someTF, value);

现在,要回答如何通过一种方法公开许多私有(private) JTextField 这个更全局的问题,一种可能是为它们中的每一个分配一个字符串 ID,并将它们全部存储在一个 HashMap 中:

Map<String,JTextField> map = new HashMap<String,JTextField>();
map.put("field 1", textField1);
...
map.put("field n", textFieldn);

public void setTextField(String id, String value) {
map.get(id).setText(value);
}

或者您可以简单地为所有字段自动生成 getter(大多数 IDE 都可以轻松完成)...

关于java - 如何为 JTextField 创建一个通用的 setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30407870/

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