Solved

Java AWT.Panel action event help

Posted on 2006-11-23
13
326 Views
Last Modified: 2008-03-10
Hi,
    I have a Panel which I declared as an instance variable and can be accessed by the event handler. How do I change the components within the Panel on a click of a button? I already have my class and the actionPerformed(ActionEvent event) method written. The problem is when I want to add a Label, for instance, within the Panel on a click of the button, it doesn't work. What is an approach to accomplish this? thanks!

private Panel myPanel = new Panel(new FlowLayout());
private myButton = new Button();
...
myButton.addActionListener(this);
...
public void actionPerformed(ActionEvent event) {
   if(event.getSource() == myButton){
      myPanel.add(new Label("A new label has been created"));
   }
}
   
0
Comment
Question by:azcalv408
  • 7
  • 6
13 Comments
 
LVL 5

Expert Comment

by:gkishoreji
ID: 18005804
the label will not be visible until u validate the contents...
validate the panel after adding the component.

public void actionPerformed(ActionEvent event) {
   if(event.getSource() == myButton){
      myPanel.add(new Label("A new label has been created"));
      myPanel.validate();
   }
}
0
 
LVL 5

Expert Comment

by:gkishoreji
ID: 18005808
sorry.. u need to validate the entire frame..

public void actionPerformed(ActionEvent event) {
   if(event.getSource() == myButton){
      myPanel.add(new Label("A new label has been created"));
      validate();
   }
}
0
 

Author Comment

by:azcalv408
ID: 18005863
hi gkishoreji ,
  thanks for helping me, but it still doesn't work :(
  i even tried
myPanel.setBackground(Color.blue);      to change its color (nothing changed)
validate();
0
Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

 
LVL 5

Expert Comment

by:gkishoreji
ID: 18005901
ohh. i didnt notice...

u have a problem here

event.getSource() == myButton

u must compare objects using equals method

event.getSource().equals(myButton)
0
 

Author Comment

by:azcalv408
ID: 18005914
that's not it either...
0
 
LVL 5

Expert Comment

by:gkishoreji
ID: 18005917
it should work fine.. check whether u have added the panel to the Frame or the outer container..
0
 

Author Comment

by:azcalv408
ID: 18005921
this is in the main class, myButton is also defined up top
public myClass extends Frame{  
      myButton.addActionListener(this);
      add(myPanel);
      setVisible(true);
}
does that look right?
0
 

Author Comment

by:azcalv408
ID: 18005924
public class,  sorry
0
 
LVL 5

Accepted Solution

by:
gkishoreji earned 300 total points
ID: 18005941
I tried this for ur question... its working fine for me...
check if u r missing something

import java.awt.*;
import java.awt.event.*;

public class Test extends Frame implements ActionListener
{
      Panel p = new Panel();
      Button b = new Button("Add");
      public Test()
      {
            b.addActionListener(this);
            add(b);
            add(p);
            setLayout(new FlowLayout());
            setVisible(true);
      }
      
      public static void main(String[] args)
      {
            new Test();
      }
      
      public void actionPerformed(ActionEvent e)
      {
            if(e.getSource().equals(b))
            {
                  p.add(new Label("New Label"));
                  p.setBackground(Color.blue);
                  validate();
            }
      }
}
0
 

Author Comment

by:azcalv408
ID: 18005959
I think I know the problem now (sorry for not clarifying earlier):
I tried to change it after setting background in the main class like
myPanel.setBackground(Color.red);
myPanel.add(new Label("New Label");

then I want to change the existing panel on click of button....is there a way to do that?
0
 
LVL 5

Expert Comment

by:gkishoreji
ID: 18006010
>> then I want to change the existing panel on click of button

i dont understand this
0
 

Author Comment

by:azcalv408
ID: 18006113
nevermind that, I got it now. thanks a bunch!
0
 

Author Comment

by:azcalv408
ID: 18006125
sorry...just wondering if you know how to clear the entire panel out? like remove all labels and start over with the same panel. thanks!
0

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question