ReminderGUI
のオブジェクトはJTextArea
のフィールドを持っています。 ReminderGUI
は、リマインダーを保存して表示できるアプリを表します。 getReminderButton
をクリックすると、この日に以前に保存されたリマインダーを見つけてJTextArea
に表示する(この機能はコードスニペットに表示されません)。`JTextArea`インスタンスフィールドを使用して` JTextArea`コンテンツを変更するには?
JTextArea
のテキストを変更する際に問題が発生しています。そのコードは以下のとおりです。 getReminderButton
をクリックすると、getReminderButtonHandler()
は新しい空白JTextArea
を初期化し、それをsome new text here
に追加することになっています。なぜこれは機能しませんか?
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これは、問題を解決しますが、なぜ私の方法は間違っていた? – Yos
メソッドに新しい*** JTextAreaを作成していますが、なぜ機能するのですか?この新しいJTextAreaのテキストを設定すると、表示されたJTextAreaのテキストが魔法のように変更されるのはなぜですか?これは、Javaオブジェクトの仕組みに関する基本的な誤解を示唆しています。 –
@HovercraftFullOfEelsですが、私はそれを既存のフィールドに設定しています。何らかの 'repaint()'メソッドを使用する必要がありますか? – Yos