u can use fireChangeEvent.
like that:
public class WizWizardPanel1 implements WizardDescriptor.Panel {
private WizVisualPanel1 component;
private final Set<ChangeListener> listeners = new
HashSet<ChangeListener>(1);
public Component getComponent() {
if (component == null) {
component = new WizVisualPanel1();
}
return component;
}
public boolean isValid() {
if(component == null){
return false;
}
if ((component.getLbl1().getText().length()== 0) &&
(component.getLbl2().getText().length() == 0)){
return true;
}
return false;
}
public final void addChangeListener(ChangeListener l) {
synchronized (listeners) {
listeners.add(l);
}
}
public final void removeChangeListener(ChangeListener l) {
synchronized (listeners) {
listeners.remove(l);
}
}
//firechange event calls to isValid from stateChanged. if Valid is true,
//fireChange enable next o finish button.
protected final void fireChangeEvent() {
Iterator<ChangeListener> it;
synchronized (listeners) {
it = new HashSet<ChangeListener>(listeners).iterator();
}
ChangeEvent ev = new ChangeEvent(this);
while (it.hasNext()) {
it.next().stateChanged(ev);
}
}
}
i let U here the Tom Wheelerīs site, where U can find a little example:
Tom Wheeler's NetBeans Site
itīs a little confusing, but not so hard (unless u play with wrappers like me, but itīs another issue. Nothing to do with this...

).