클릭 할 때 간단한 JLabel이 "두 번째 텍스트"로 텍스트를 변경하게하는 간단한 JButton을 만들려고합니다. 그 후 현재 스레드가 몇 초 동안 잠자기 상태가되고 JLabel이 텍스트를 다시 변경하기를 원합니다. , 이번에는 "세 번째 텍스트"로 변경하십시오. 나는 그것이 여기에서 끝났다라고 생각한다. 그러나 그것이 내가 원하는 방법으로 작동하지 않는다. 아래에 제공된 코드는 JButton을 누른 상태에서 지정된 시간 동안 JButton을 고정시킨 다음 레이블을 세 번째 상태로 변경합니다. 즉, "초 텍스트"가 나타나지 않습니다.스레드가 제대로 잠자기 상태가 아닌 이유는 무엇입니까?
어떻게해야하는지 알려주세요.
감사합니다.
package testPackage;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Demo {
public static void main(String[] args) throws InterruptedException {
JFrame frame = new JFrame();
JButton button = new JButton("Click me!");
final JLabel label = new JLabel("first text");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 600);
JPanel panel = new JPanel();
panel.add(button);
panel.add(label);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
label.setText("second text");
try {
Thread.currentThread();
Thread.sleep(4000);
} catch (InterruptedException exc) {
System.out.println("Erorrrrr");
}
}
});
frame.add(panel);
frame.setVisible(true);
}
}
여기에 가장 자주 묻는 질문이 하나를 변경합니다. Event-Dispatch Thread를 잠자기 상태로 만들고 GUI를 고정시킵니다. 대신에 javax.swing.Timer를 사용하여 지연된 이벤트를 예약해야합니다. –
제쳐두고, Thread.currentThread();가 성취하기를 기대하는 것은 무엇입니까? –
세 번째 텍스트는 어디에 있습니까? – 11684