I have a problem repainting Jpanel. I wrote a simple code just to check whether it works, but notnihg is happening. Function initPanelAnswer should initialize answer panel with some image, but I wanted to make it more simply. So, according to my logic, this should print out "Paint Component", after I create instance of this class somewhere else. Where am I wrong?


public class PanelAnswer extends JPanel {
	private JPanel answer;
	public PanelAnswer(){
		answer = new JPanel();
	protected void paintComponent(Graphics g) {
		System.out.println("Paint Component");		

	private void initPanelAnswer(){
	public JPanel getPanel(){
		return answer;

Maybe its smart enough to realise that repainting an uninitialised unpopulated invisible panel is unnecessary?
ps: What's the point of answer = new JPanel... don't you want an instance of PanelAnswer?

I wanted to add this panel (answer) on JFrame, and then depending on user's action, I'll repaint this answer panel. So I did it like this. Maybe, this is not a best solution, I'll try something different, but why this isn't working, I'm confused where I did it wrong.

You have a class PanelAnswer with overrides for paintComponent, but you don't do much to create one. I still don't see why you create an unrelated JPanel when you call the constructor for PanelAnswer unless you intend to use it as a container, in which something more like this should work:

public PanelAnswer(){
    JFrame jf = new JFrame("Hello");
    this.add(new JLabel("Hello"));
    // initPanelAnswer();

Yes, that solved problem. I didn't realize that I dont need private member answer at all. Thank you very much, and thanks for your quick replies.