ironmantis7x
ironmantis7x

Reputation: 827

How do I refresh a GUI in Java?

I have a general question that is Java related.

I am writing an application that has a GUI menu. I am trying to change one part of the GUI menu based on the selection of a Radio button.

Do I need to:

  1. Redraw the whole window or just update that part with:

    setVisible(true)?
    
  2. If I just use the statement from #1 above .. the GUI is fine -- until I move the mouse over it and then I see the previous button choice. What am I doing wrong?

Upvotes: 8

Views: 76614

Answers (3)

shortstuffsushi
shortstuffsushi

Reputation: 2330

Swing components have a repaint(), revalidate(), and doLayout() method. One of those should probably be able to redraw whichever pieces you want. However, doLayout is not something that you should be taking responsibility for, that's the layout engines responsibility.

You may also want to check out this post, the first response has a pretty good explanation, and links to an article with more detail.

In terms of the second part of your question, I'm not sure, but we may need to see some code to get an idea. Is the 'replaced area' actually being removed from the view?

Upvotes: 11

Andrew Thompson
Andrew Thompson

Reputation: 168825

..in my application the user select which device platform type they want top test (that choice is a set of two radio buttons on the left). When the user selects either Android or iOS, the center grouping of check boxes changes to reflect a group of android devices they can test or a group of iOS devices that they can test.

  1. Put a panel in the 'center grouping'.
  2. Use a CardLayout for the panel.
  3. Add both iOS & Android controls to the panel with the card layout.
  4. Flip between them as needed.

Upvotes: 4

BillRobertson42
BillRobertson42

Reputation: 12883

Call revalidate() on the top level component.

Upvotes: 4

Related Questions