Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Modify code to add actincommands

Posted on 2004-04-15
9
Medium Priority
?
248 Views
Last Modified: 2010-03-31
Hello everyone out I'm back asking for some more help Could this code be modified to be able to add actionCommands in like a for statement, so I don't have to write alot of repetive code. I have an example that was given to me by CEHJ

Example:

for(int i = 0; i < checkboxes.length; i++) {
     checkboxes[i].setActionCommand("kp" + (i + 1) + ".wav");
     levels.add(checkboxes[i]);//go through checkboxs and add them to levels
}    



import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

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

public class DefensiveMoves extends JPanel implements ActionListener
{
     JCheckBox check;
     JLabel label;
     JPanel gridPanel;
     ArrayList myArrayList;

     public DefensiveMoves()
     {
          myArrayList = new ArrayList();
          label = new JLabel();
          //Call it like this . . .
          gridPanel = new JPanel();
          gridPanel.setLayout(new GridLayout(0, 3));
          // Setting MY layout...
          setLayout(new BorderLayout());
          add(label, BorderLayout.NORTH);
          add(gridPanel, BorderLayout.CENTER);
          label.setText("         DefensiveMoves");
          label.setForeground(Color.red);
          setBackground(Color.white);
          looprow : for (int row = 0; row < 20; row++)
          {
               for (int col = 0; col < 3; col++)
               {
                    int n = (20 * col + row + 1);
                    if (n > 50)
                    {
                         break looprow;
                    }
                    JButton check = new JColoredButton("" + n, Color.green, Color.black);
                    check.addActionListener(this);
                    //myArrayList.add(check);
                    gridPanel.add(check);
               }
          }
     }

     public static void main(String[] args)
     {
          JFrame frame = new JFrame();
          frame.getContentPane().add(new DefensiveMoves());
          frame.setSize(400, 400);
          frame.setVisible(true);

          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }

     public void actionPerformed(ActionEvent e)
     {
          JColoredButton button = (JColoredButton)e.getSource();
         
          if (myArrayList.contains(button))
          {
               myArrayList.remove(button);
               button.setDefaultColor();
          }
          else
          {
               myArrayList.add(button);
               button.setPressedColor();
          }
         
          System.out.println(myArrayList);
     }
}

class JColoredButton extends JButton
{
     private Color foreground;
     private Color deafultForeground;
     private Color background;
     private Color defaultBackground;

     public JColoredButton(String label, Color background, Color foreground)
     {
          super(label);
          this.background = background;
          this.foreground = foreground;
          defaultBackground = getBackground();
          deafultForeground = getForeground();
     }
     
     public void setPressedColor()
     {
          setBackground(background);
          setForeground(foreground);
     }
     
     public void setDefaultColor()
     {
          setBackground(defaultBackground);
          setForeground(deafultForeground);
     }
}
0
Comment
Question by:Drop_of_Rain
  • 4
  • 3
  • 2
9 Comments
 
LVL 92

Expert Comment

by:objects
ID: 10838244
         looprow : for (int row = 0; row < 20; row++)
          {
               for (int col = 0; col < 3; col++)
               {
                    int n = (20 * col + row + 1);
                    if (n > 50)
                    {
                         break looprow;
                    }
                    JButton check = new JColoredButton("" + n, Color.green, Color.black);
                    check.setActionCommand(xxx); // <- set your action command here to what u want it to be
                    check.addActionListener(this);
                    //myArrayList.add(check);
                    gridPanel.add(check);
               }
          }
     }
0
 
LVL 92

Expert Comment

by:objects
ID: 10838248
Or you could even set it in your JColoredButton constructor.
What string exactly did u want to set it to?
0
 

Author Comment

by:Drop_of_Rain
ID: 10838304
("kp" + (i + 1) + ".wav");

Like what was in the for:

checkboxes[i].setActionCommand("kp" + (i + 1) + ".wav");
0
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.

 
LVL 92

Accepted Solution

by:
objects earned 2000 total points
ID: 10838426
        int i = 0;
         looprow : for (int row = 0; row < 20; row++)
          {
               for (int col = 0; col < 3; col++)
               {
                    int n = (20 * col + row + 1);
                    if (n > 50)
                    {
                         break looprow;
                    }
                    JButton check = new JColoredButton("" + n, Color.green, Color.black);
                    check.setActionCommand("kp" + (i + 1) + ".wav"); // <- set your action command here to what u want it to be
                    check.addActionListener(this);
                    //myArrayList.add(check);
                    gridPanel.add(check);
                    i++;
               }
          }
     }
0
 
LVL 15

Expert Comment

by:Javatm
ID: 10838430
> checkboxes[i].setActionCommand("kp" + (i + 1) + ".wav");

You can also use it in your buttons :

for(int i = 0; i < check.length; i++) {
check.setActionCommand("kp" + (i + 1) + ".wav");
}


0
 
LVL 15

Expert Comment

by:Javatm
ID: 10838449
Or by just declaring it above on your for loop like what objects said.
0
 

Author Comment

by:Drop_of_Rain
ID: 10838494
Its working, thanks everyone you make this look so simple. I used objects code
0
 
LVL 15

Expert Comment

by:Javatm
ID: 10838512
Where always happy as long as we can resolve your problem :)
0
 
LVL 92

Expert Comment

by:objects
ID: 10838535
:)
0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

Question has a verified solution.

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

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 make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…
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 …
Suggested Courses

876 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