버튼을 클릭 할 때마다 wordLabel
이라는 ArrayList<JLabel>
이라는 이름이 지워지고 ArrayList
으로 업데이트되도록 버튼 ActionListener
을 작성합니다. 아쉽게도 이전 ArrayList
은 올바르게 지워지지 않고 새 것으로 겹쳐서 표시됩니다.JLabel을 ActionListener로 업데이트하는 방법
예를 들어, 클릭하기 전에 : SPRING
; 클릭 후 (대신 -----
의) SPRING-----
는
내 코드 :
private class StartListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent event) {
startPanel.wordLabel.clear();
for (int i = 0; i <= word.length() - 1; i++) {
startPanel.wordLabel.add(new JLabel("_"));
startPanel.add(startPanel.wordLabel.get(i));
}
startPanel.revalidate();
startPanel.repaint();
}
}
사람이 도와 드릴까요? 미리 감사드립니다.
새로운 JLabels을 추가 왜 startPanel.wordLabel.repaint() – Troveldom
시도 ? 왜 이전의 텍스트를 변경하지? 새 레이블 만들기 == 새 객체 만들기 == 오버 헤드. 이것은 어쨌든 목적은 무엇입니까? 그리고 동시에 문제가 될 수 있습니다. 'actionPerformed'는 특정 스레드 (EDT)에서 처리됩니다. 변수가'volatile'으로 선언되지 않으면 변수의 사본이 해당 스레드에 대한 스레드 로컬 저장소에 만들어집니다 (사용자의 jvm에 따라 다름). 어쨌든, 그것은 마치 당신이 충분한 코드를 보여주지 않는 것 같습니다. (리스트를 지우고 그 위에 추가, 그것 위로 스택해야한다.) –
@VinceEmigh 체크해봤을 때, 'ArrayList' 자체는 지워졌지만 프레임에 이전 것을 계속 표시한다. –