-3
나는 모든 방법을 찾았지만 해결책을 찾지 못했습니다. 진도 표시 줄의 기본 자바 아이콘 을 JProgressBar
으로 변경하고 싶습니다. 여기 JProgressBar에서 기본 Java 아이콘을 변경하는 방법은 무엇입니까?
JFrame
)의 아이콘을 변경하려면 가정, 그래서 내 작은 조각
public class SwingWorkerProgressMonitor implements PropertyChangeListener {
private static final int PROGRESS_BAR_WIDTH = 200;
private ProgressMonitor progressMonitor;
private final SwingWorker<?, ?> task;
private SwingWorker<Void, Void> backingTask;
private String message;
private final JProgressBar progressBar = new JProgressBar();
int progress = 0;
private final String title;
/*
* Progress monitor that takes a swing worker and shows its progress
*/
public SwingWorkerProgressMonitor(SwingWorker<?, ?> sw, String title) {
this.task = sw;
this.title = title;
}
/**
* This Fu2nction Invoked when task's progress property changes.
*/
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals("progress")) {
int progress = (Integer) evt.getNewValue();
updateProgress(progress);
}
}
private void updateProgress(int progress) {
progressMonitor.setProgress(progress);
message = String.format(PlasaApplication.getTranslator().getString(PlasaLanguageKey.PROGRESS_LODING_DATA)
+ "(%d%%)", progress);
progressMonitor.setNote(message);
if (progressMonitor.isCanceled() || task.isDone()) {
Toolkit.getDefaultToolkit().beep();
if (progressMonitor.isCanceled()) {
task.cancel(true);
}
}
}
/**
* This function start the progress When click the save button on
*
*
* @param component
*/
public void start(Component component) {
// creates progress bar
Dimension preferredSize = progressBar.getPreferredSize();
preferredSize.width = PROGRESS_BAR_WIDTH;
progressBar.setPreferredSize(preferredSize);
UIManager.put("ProgressMonitor.progressText", title);
UIManager.put("OptionPane.cancelButtonText",
PlasaApplication.getTranslator().getString(PlasaLanguageKey.GLOBAL_CANCEL));
progressMonitor = new ProgressMonitor(progressBar, "", "", 0, 100);
progressMonitor.setProgress(0);
if (task == null) {
throw new IllegalArgumentException("swing worker is not set");
}
backingTask = new BackingTask(task);
task.addPropertyChangeListener(this);
backingTask.execute();
}
/**
* Inner class Here begin the progress status
*
*/
private class BackingTask extends SwingWorker<Void, Void> {
SwingWorker<?, ?> worker; // backing worker
public BackingTask(SwingWorker<?, ?> worker) {
this.worker = worker;
}
// run the task on background
@Override
protected Void doInBackground() throws Exception {
worker.execute();
return null;
};
/**
* This function close the progress monitor when task is done or cancel
*/
@Override
public void done() {
Toolkit.getDefaultToolkit().beep();
progressMonitor.close();
}
}
}
JProgressBar는 어디에 있습니까? 무슨 아이콘이야? 자신이하는 일을 보여주는 작은 예를 제시 할 수 있습니까? –
Stackoverflow는 튜토리얼 사이트가 아니라 오류 지향적 인 보조자입니다. 문제에 대한 귀하의 접근 방식을 우리에게 알려 주셔야합니다. 우리는 기꺼이 당신이 알아 내도록 도울 것입니다. 우리는 '여기, 이것을해라.'라고 말하지 않을 것입니다. 우리는 '그 선 대신에 이것을 말하십시오.'라고 말할 것입니다. 아니면 yyy 대신 zzz를 시도해 보았습니까? 가능한 경우 코드 및 스택 트레이크를 제공하십시오. – diazazar
DYM ['ProgressMonitor'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/ProgressMonitor.html)? 'JProgressBar'에는 아이콘이 없습니다. 더 빨리 도움을 받으려면 [MCVE] (http://stackoverflow.com/help/mcve)를 게시하십시오. –