Solved

Java AWT.Panel action event help

Posted on 2006-11-23
13
331 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

 
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

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

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

For beginner Java programmers or at least those new to the Eclipse IDE, the following tutorial will show some (four) ways in which you can import your Java projects to your Eclipse workbench. Introduction While learning Java can be done with…
Are you developing a Java application and want to create Excel Spreadsheets? You have come to the right place, this article will describe how you can create Excel Spreadsheets from a Java Application. For the purposes of this article, I will be u…
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…
This video teaches viewers about errors in exception handling.

617 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