创建后如何在 JTextField 中设置新文本?
Posted
技术标签:
【中文标题】创建后如何在 JTextField 中设置新文本?【英文标题】:how to set new text in JTextField after creation? 【发布时间】:2011-09-15 02:24:33 【问题描述】:我有一个 jTextField ,我在创建框架时将它的值设置为某个总和。 这是启动代码:
totalTextField.setText(
itemsPriceTextField.getText() +
Float.toString(orderDetails.delivery)
);
此文本字段应显示用户选择的项目的总和。 选择是在不同的框架上完成的,两个框架都是可见/不可见的 一次。 用户可以来回添加/删除项目。
现在,每次我再次将此框架设置为可见时,我都需要重新加载设置到该字段的值 (也许没有进行任何更改,但如果是这样,我需要设置新的正确总和)。
我对此非常绝望。 谁能给我一个线索? 提前致谢! :)
【问题讨论】:
你确定不是每次都创建一个新框架,而不是让它可见吗? 是的,我确定.. 我保持指向前一帧的指针,只是来回移动 当你让框架可见时,你是不是在使用任何监听器事件,因为当某些操作发生时你让它可见 如果您想在焦点对准文本字段时更改文本。那么你不能这样做 【参考方案1】:在将框架再次设置为可见之前,应使用新值/状态更新字段。 类似:
jTextField.setText("put your text here");
jRadioButton.setSelected(!isSelected());
.
/* update all you need */
.
jFrame.setVisible(true);
框架将提出新的值/状态。
【讨论】:
如果您想在焦点对准文本字段时更改文本。那么你不能这样做。【参考方案2】:将 WindowListener 添加到框架中。然后你可以处理windowActivated事件并重置文本字段的文本。
查看如何Write Window Listeners。
【讨论】:
【参考方案3】:使用 DocumentListener 触发 JTextField public void setText(String t)
这里是 DocumentListener 的示例:
public class SetTextInJTextField extends JFrame implements DocumentListener
JTextField entry;
JTextField entryToSet = new JTextField();
public SetTextInJTextField()
createWindow();
entry.getDocument().addDocumentListener(this);
private void createWindow()
JFrame frame = new JFrame("Swing Tester");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
createUI(frame);
frame.setSize(560, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
private void createUI(final JFrame frame)
JPanel panel = new JPanel();
entry = new JTextField();
entryToSet = new JTextField();
LayoutManager layout = new BoxLayout(panel, BoxLayout.PAGE_AXIS);
panel.setLayout(layout);
panel.add(this.entry);
panel.add(entryToSet);
frame.getContentPane().add(panel, BorderLayout.CENTER);
public void setTextInTargetTxtField()
String s = entry.getText();
entryToSet.setText(s);
// DocumentListener methods
public void insertUpdate(DocumentEvent ev)
setTextInTargetTxtField();
public void removeUpdate(DocumentEvent ev)
setTextInTargetTxtField();
public void changedUpdate(DocumentEvent ev)
public static void main(String args[])
//Schedule a job for the event dispatch thread:
//creating and showing this application's GUI.
SwingUtilities.invokeLater(new Runnable()
public void run()
new SetTextInJTextField().setVisible(true);
);
灵感来自: https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/uiswing/examples/components/TextFieldDemoProject/src/components/TextFieldDemo.java
相关课程: https://docs.oracle.com/javase/tutorial/uiswing/components/textfield.html
【讨论】:
以上是关于创建后如何在 JTextField 中设置新文本?的主要内容,如果未能解决你的问题,请参考以下文章
单击提交后如何在带有java bean值的JTextField上设置文本
如何创建 JTextField 数组并从 String 数组中检索文本?