Tôi có ProgressMonitor pm
và một SwingWorker sw
. Tôi muốn hủy SwingWorker khi tôi nhấn nút cancel
trên pm
. Tôi đoán điều này không nên quá khó khăn, và tôi đọc một số hướng dẫn về SwingWorker và ProgressMonitor, nhưng tôi không thể làm điều này để làm việc.nhận sự kiện hủy của Java ProgressMonitor
final ProgressMonitor pm = new ProgressMonitor(frame, "checking", "...", 0, 100);
final SwingWorker sw = new SwingWorker()
{
protected Object doInBackground() throws Exception
{
doSomethingAndUpdateProgress();
}
};
sw.addPropertyChangeListener(new PropertyChangeListener()
{
public void propertyChange(PropertyChangeEvent evt)
{
if(evt.getPropertyName().equals("progress"))
{
updateProgress();
}
if(pm.isCanceled())
{
cancelAction();
}
if(pm.isDone())
{
doneAction();
}
}
});
sw.execute();
Cập nhật tiến trình đang hoạt động tốt, nhưng pm.isCanceled()
không bao giờ là true
. Tôi cho rằng tôi cần một propertyChangeListener cho ProgressMonitor, nhưng tôi không biết làm thế nào tôi sẽ thêm một cái ở đó.
câu trả lời allthough mKorbel là rất thông tin nó thiếu ProgressMonitor tôi đã thực sự hỏi về - vì vậy tôi đã chọn điều này như là câu trả lời. – AntiZamba