Ich habe ein Objekt ReminderGUI
, das ein Feld JTextArea
hat. ReminderGUI
stellt eine App dar, mit der Erinnerungen gespeichert und angezeigt werden können. Wenn auf getReminderButton
geklickt wird, möchte ich, dass die App die Erinnerung findet, die zuvor für dieses Datum gespeichert wurde, und sie in der anzeigen (diese Funktion wird im Code-Snippet nicht angezeigt).Wie ändert man `JTextArea` Inhalte mit` JTextArea` Instanzfeld?
Ich habe Probleme mit der Änderung JTextArea
Text und der Code unten demonstriert es. Sobald getReminderButton
angeklickt wird, dann soll getReminderButtonHandler()
einen neuen leeren initialisieren und dann an some new text here
anhängen. Warum funktioniert das nicht?
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ReminderGUI extends JFrame implements ActionListener{
private JButton getReminderButton;
private JTextArea reminderTextArea;
public ReminderGUI() {
super();
super.setLayout(new BorderLayout());
this.reminderTextArea = new JTextArea("Enter text");
this.getReminderButton = new JButton("Get reminder");
JPanel southPanel = new JPanel();
southPanel.add(getReminderButton, BorderLayout.SOUTH);
super.add(southPanel, BorderLayout.SOUTH);
super.add(reminderTextArea, BorderLayout.CENTER);
this.getReminderButton.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == this.getReminderButton) {
this.getReminderButtonHandler();
}
}
private void getReminderButtonHandler() {
this.reminderTextArea = new JTextArea("");
this.reminderTextArea.append("some new text here");
}
public static void main(String[] args) {
ReminderGUI rmg = new ReminderGUI();
rmg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
rmg.setSize(500, 300);
rmg.setVisible(true);
}
}
@Nehorai das Problem dadurch gelöst, aber warum war meine Methode falsch? – Yos
Sie erstellen eine *** neue *** JTextArea in der Methode, warum sollte es funktionieren? Wenn Sie den Text dieser neuen JTextArea festlegen, warum glauben Sie, dass es den Text in der angezeigten JTextArea magisch verändern würde? Dies deutet auf ein grundlegendes Missverständnis darüber hin, wie Java-Objekte funktionieren. –
@HovercraftFullOfEels, aber ich setze es auf das vorhandene Feld. Muss ich eine Art Repaint() Methode verwenden? – Yos