Это ...
private void buttonBActionPerformed(java.awt.event.ActionEvent evt) {
frameA a= new frameA();
a.getProgressbar().setIndeterminate(true);
}
Не будет работать, вы только что создали еще один экземпляр frameA
, который не виден. Он не имеет отношения к кадру, который в настоящее время открыт.
Есть множество способов вы можете достичь этого ...
Вы могли бы ...
Передайте ссылку на frameA
в frameB
как часть вызова конструктора для frameB
. Затем в вашем методе actionPerformed
вы просто использовали бы эту ссылку, чтобы изменить состояние индикатора выполнения.
Но это создало бы тесную связь между frameA
и frameB
что позволит значительно уменьшить повторное использование frameB
Вы могли бы ...
обеспечить средства, с помощью которого заинтересованное лицо может приложить ActionListener
- frameB
, который будет срабатывать при нажатии кнопки.
Это предполагает работу потока и предоставляет компоненты для внешних источников (через ActionEvent#getSource
), которые могли бы позволить людям изменить свой компонент ...
Вы, вероятно, следует ...
Огонь PropertyChanged
события.
Это, наверное, самый простой и безопасный из всех вариантов, которые я придумал. Использование прослушивателя изменений свойств таким образом означает, что вам не нужно выставлять JProgressBar
, JButton
или создавать плотную связь между двумя кадрами.
Поддержка изменения стоимости встроена в состав Container
, поэтому все компоненты/органы управления имеют ее.
Например, вы должны приложить PropertyChangeListener
к b
, когда вы его построите.
b = new frameB();
b.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals("progressState")) {
progressbar.setIndeterminate((Boolean)evt.getNewValue());
}
}
});
Добавить в actionPerformed
метод bFrame
«s, вы бы просто позвонить ...
firePropertyChange("progressState", false, true);
Если вы хотите установить неопределенное состояние (можно поменять местами boolean
значения, чтобы сбросить его, если вы хотите)
См (HTTP [Использование нескольких JFrames, хороший/плохой практике?]: //stackoverflow.com/a/9554657/418556) –