There are 2 ways to do this. One is plain HTML style. The other is using AJAX. They are mostly done the same way, but the difference is in how the user will interact with the display.
JSF's core functionality revolves around having a model and action processors that (usually) set and/or use data from the model. In your case, the model (backing bean) would contain the values of each of the 3 listboxes, the value in the textinput control, and whatever other data UI elements you want.
For simplicity's sake, the same backing bean that holds the model data is usually the one that holds the functions that act on the model. I avoided using the
word "Controller" here, because true MVC controllers don't do anything but adjust Models and Views to keep them in sync, and JSF action methods are more related to the business functionality. If there's a good technical name for that, I've never heard it.
In the non-AJAX (straight HTML) method, you'd set the display controls and then you'd have to click a commandButton or commandLink control to fire off an action method. The action method would do its calculations (or whatever), update the model values, and return to JSF, whose Controllers would then update the display from the updated model.
This works, but it can be annoying, since you have to make an extra effort to get a response.
If you add AJAX to the mix, you can make it so that when the data controls are changed by the user, the act of changing them fires off an invocation of an action method. In that case, you don't need a "go" button to make things work.
AJAX required either an AJAX-aware extension tag set such as RichFaces or JSF2, which adds an "ajax" tag to the core JSF tag set. Listeners do not provide any AJAX support - all they are are tap-ins to the normal JSF lifecycle, so you can't just code a Listener. And, in fact, there's really nothing Listeners can do for you here that can't be done simpler with the normal action methods that you are required to have anyway. Until an action is fired (whether traditionally or via AJAX), Listeners won't be invoked - they're not asynchronous methods. In the JSF lifecycle, their time comes after the data has been validated and updated, but right before the action method is invoked.