как установить новый текст в JTextField после создания?

У меня есть jTextField , и я устанавливаю его значение в определенную сумму при создании фрейма.
Вот код запуска:

totalTextField.setText(
            itemsPriceTextField.getText() +           
                    Float.toString(orderDetails.delivery)
);

В этом текстовом поле должна отображаться сумма элементов, выбранных пользователем.
Выбор выполняется в другом фрейме, и оба фрейма одновременно видимы/невидимы.
Пользователь может перемещаться вперед и назад и добавлять/удалять Предметы.

Теперь каждый раз, когда я снова устанавливаю этот кадр видимым, мне нужно перезагружать значение, установленное для этого поля
(возможно, никаких изменений не было внесено, но если это так, мне нужно установить новую правильную сумму).

Я в отчаянии.
Кто-нибудь может подсказать?
Заранее спасибо! :)


person Daniel Briskman    schedule 14.06.2011    source источник
comment
Вы уверены, что не создаете каждый раз новый кадр, а не делаете его видимым?   -  person Federico Vera    schedule 15.06.2011
comment
Да, я уверен.. Я сохраняю указатели на предыдущие кадры и просто перемещаюсь вперед и назад   -  person Daniel Briskman    schedule 15.06.2011
comment
всякий раз, когда вы делаете кадр видимым, вы не используете какое-либо событие прослушивателя, поскольку вы делаете его видимым, когда происходит какая-то операция   -  person Abhishek Choudhary    schedule 15.06.2011
comment
если вы хотите изменить текст, пока вы находитесь в фокусе на текстовое поле. то вы не можете сделать это таким образом   -  person Explorer    schedule 24.08.2020


Ответы (3)


Прежде чем снова сделать рамку видимой, следует обновить поля новыми значениями/состояниями.
что-то вроде:

jTextField.setText("put your text here");  
jRadioButton.setSelected(!isSelected());  
.  
/* update all you need */
.  
jFrame.setVisible(true);

Фрейм появится с новыми значениями/состояниями.

person Daniel Briskman    schedule 15.06.2011
comment
если вы хотите изменить текст, пока вы находитесь в фокусе на текстовое поле. то вы не можете сделать это таким образом. - person Explorer; 24.08.2020

Добавьте WindowListener в кадр. Затем вы можете обработать событие windowActivated и сбросить текст текстового поля.

См. раздел написать прослушиватели окон.

person camickr    schedule 14.06.2011

Используйте 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

person vvauban    schedule 11.05.2021