Button1을 누르면 다음 코드 줄에서 encode() 메서드 실행이 완료 될 때까지 Jframe이 응답하지 않게됩니다. 하지만 진행 상황을 표시하는 Jframe 진행률 표시 줄을 업데이트해야합니다. JButtonActionPerformed에서 시간이 많이 소요되는 메서드 호출
private void Button1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
if (flagState == 0) {
WavFile.decode(readWavFile, msg.getText(), key.getText().hashCode());
} else if (flagState == 1) {
WavFile.encode(readWavFile, msg.getText(), key.getText().hashCode());
}
} catch (WavFileException | IOException e) {
notes.setText(e.getMessage());
}
}
나는이
private void Button1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
if (flagState == 0) {
Thread t = new Thread(new Runnable() {
public void run() {
WavFile.decode(readWavFile, msg.getText(), key.getText().hashCode());
}
};)
t.start();
} else if (flagState == 1) {
Thread t = new Thread(new Runnable() {
public void run() {
WavFile.encode(readWavFile, msg.getText(), key.getText().hashCode());
}
};)
t.start();
}
} catch (WavFileException | IOException e) {
notes.setText(e.getMessage());
}
}
일을 생각하고, 인코딩() 메소드에서 진행 표시 줄을 업데이트합니다.
하지만 모듈간에 강력한 결합이 있다는 것을 이해합니다.
나는 매번 새로운 스레드를 호출하는 것이 좋은 생각이라고 생각한다. (ExecutorService는 생각할 수 있지만 사용법은 확실하지 않다.)
괜찮은 조각 코드로 만들려면 어떻게해야합니까 ??
모니터 스레드는 생각하지 않았습니다. 나는이 접근법을 좋아한다. 고마워. – Soumy
'진행률 표시 줄 '이'JProgressBar '를 의미하는 경우 해당 호출은 EDT에 대해 예약되어야합니다. –