I have a closeWindow() method which uses dispose() for the current JFrame to close down. When I show the window again, the controls (textboxes, lists, tables etc.) still have their previous values in place that were there when I dispose():d the frame… Why is that? Is there another way to completley close and clear a frame?
This is the code that another JFrame uses to show the other window, am I doing something wrong here?
@Action
public void showAddProductToOrderView() {
if (addProductToOrderView == null) addProductToOrderView = new AddProductToOrderView(this);
addProductToOrderView.setVisible(true);
}
Disposing a window will not clear its child text components. Dispose will release native resources. The javadoc for java.awt.Window also states:
As suggested by others, create a new instance each time instead. If that’s to expensive I believe your best option is to clear sub components when the view becomes visible, e.g. by overriding
setVisible.EDIT:
Remove the null check to create a new frame each time.
I don’t know about the rest of your code, if there’s something else depending on the frame being reused. For example, if you have attached listeners, ensure they are unregistered to not leak them.