my button do not appear but when I resize my window the button appears

I am beginner in java(SWING) but I have got a small problem with repaint() or refresh(). When I try to Add a new JButton during execution, my button do not appear but when I resize my window the button appears.  can I execute this refresh manually (howto)?    Thank in advance.    bye
zoltixAsked:
Who is Participating?
 
flumpmanConnect With a Mentor Commented:
Try revalidating the container that you are adding the button to. (public void revalidate() in JComponent)

--
flumpman
0
 
s_lavieCommented:
or
repaint();
0
 
zoltixAuthor Commented:
I can't find revalidate() because i use component and Jframe.   In Jframe I found validate and it s Ok.  What is the diffenrence between validate, revalidate?
0
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
s_lavieCommented:
You should use JComponent and not Component.
For what object you use Component?
Mix of awt and swing objects is a bad idea...
0
 
flumpmanCommented:
s_lavie is correct, that you shouldn't mix Components and JComponents.  However, when you say you are using a Component, is this the contentPane of the JFrame (java.awt.Component->java.awt.Container)?

If so, you can create a new JPanel and set the contentPane to be the JPanel you created.

Have a look at the following code example.  It shows a JFrame and adds a button which allows you to add another button which adds others ad infinitum...

Disclaimer: this is just an example it is not production worthy code :^)

------

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class AddButtonExample extends JFrame {
     
     JPanel mainPanel;
     JButton addButton;
     
     public AddButtonExample(String title) {
          super(title);
         
          addWindowListener(new WindowAdapter() {
               public void windowClosing(WindowEvent e) {
                    System.exit(0);
               }
          });
         
          mainPanel = new JPanel();
          setContentPane(mainPanel);
         
          addButton = new JButton("Add JButton");
         
          addButton.addActionListener(new ActionListener() {
               public void actionPerformed(ActionEvent e) {
                    JButton anotherButton = new JButton("Add another");
                    mainPanel.add(anotherButton);
                    anotherButton.addActionListener(this);
//                    mainPanel.repaint();
                    mainPanel.revalidate();
               }
          });
         
          mainPanel.add(addButton);
     }
     
     public static void main(String[] args) {
          AddButtonExample example = new AddButtonExample("Add Button Example");
          example.setSize(400, 200);
          example.setVisible(true);
     }
}


Note that repaint doesn't cause the new JButton to be shown - revalidate does

--
flumpman
0
 
ucero007Commented:
Make the component invisible and visible

  //
  component.setVisible(false);
  component.setVisible(true);
  //
0
 
yasser_helmyCommented:
use setVisible(true), show().
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.