Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java validate() method doesnt work properly

I have a JFrame inside of which is a jpanel that im using as the content pane.

So basically im using the jpanel to load content into on click. New content is returned as a Jpanel also so its ends up being jpanel -> inside jpanel -> inside Jframe. When i need to load in new content i clear the panel, load the new content and validate() the jframe & jpanel and the new content displays.

My problem is that when the new content displays its clear that the validate method is working because i can see the new interface but i can also see the old interface as if its become the background; i can resize the window and it just disappears and looks as it should.

enter image description here enter image description here

Is this just the way validate works or can i fix it?

Edit: this worked. The problem was i wasn't calling repaint manually.

public BaseWindow setContent(JComponent comp){
    contentPane.add(comp);
    contentPane.revalidate();
    contentPane.repaint();
    return this;
}
like image 360
slex Avatar asked May 23 '26 18:05

slex


1 Answers

Generally the code for adding/removing one or two components from a panel is:

panel.remove(..);
panel.add(...);
panel.revalidate();
panel.repaint(); // sometimes needed

However, if you are replacing all the components on the panel, then the better approach is to use a Card Layout.

You have already stated the revaliate() followed by repaint() doesn't work so the only suggestion I have is to post your SSCCE that demonstrates the problem.

like image 115
camickr Avatar answered May 25 '26 07:05

camickr



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!