2017-12-23 20 views
1

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); 
    } 
} 
+0

@Nehorai을 내 방법이 틀렸어? – Yos

+0

메소드에 *** *** 새 JTextArea를 만들고 있는데 왜 작동해야합니까? 이 새로운 JTextArea의 텍스트를 설정하면 왜 JTextArea의 텍스트가 마술처럼 바뀔 것이라고 생각합니까? 이것은 자바 객체가 어떻게 작동하는지에 대한 기본적인 오해를 제안합니다. –

+0

@HovercraftFullOfEels하지만 기존 필드를 설정하고 있습니다. 어떤 종류의'repaint()'메소드를 사용해야합니까? – Yos

답변

2

문제는이 라인에 있습니다 this.reminderTextArea = new JTextArea("Enter text");이 같은

당신은 set 방법을 사용하여 설정할 수있는 새로운 텍스트 영역, 만드는 :이 문제를 해결하지만 왜 reminderTextArea.setText(text);