Я искал весь путь, но не смог найти решение. Я хочу изменить значок java по умолчанию на индикаторе выполнения, как я использовал JProgressBar
.Как изменить значок Java по умолчанию в JProgressBar?
Вот мой небольшой фрагмент
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 не является учебным сайтом, это скорее ориентированный на ошибку помощник. Вы должны предоставить нам свой подход к проблеме, и мы с радостью поможем вам разобраться. Мы не будем говорить «здесь, сделайте это», мы скажем «вместо этой строки, попробуйте это» или «вы считали, что пытаетесь zzz вместо yyy»? Поэтому, пожалуйста, предоставьте нам код и stacktracke, если возможно – diazazar
DYM ['ProgressMonitor'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/ProgressMonitor.html)? «JProgressBar» не имеет значка. Чтобы лучше помочь, отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve). –