944,084 Members | Top Members by Rank

Ad:
  • Java Discussion Thread
  • Unsolved
  • Views: 1832
  • Java RSS
May 6th, 2007
0

need help to solve this problem

Expand Post »
here is the code.... below is my problem.............


/*
<applet code="Assign2.class" width=350 height=350>
</applet>
*/

import java.awt.event.*;
import javax.swing.*;
import java.awt.*;

/*

Class Name - Assign2


PRIVATE FEATURES

private JButton buttons[] // array to store buttons
private String labels[] // array to stoer the department name
private JPanel thePanel; // JPanel object
private JMenu editMenu,optionsMenu; //JMenu objects for EDIT menu and OPTIONS menu
public JMenuItem items[] //array to store 'department name' menus inside EDIT menu
private JRadioButton options[] // array to store Color, Text, Hits options as radio buttons
private JMenuBar menubar; // MAIN MENU for the applet
private Color colors[] // array to hold colors the given colors


private final int max_bar_width // maximum width of a bar- set to 250, cna not be changed
private final int bar_height // maximum height of a bar
private int bar_width[] // array to store the bar widths for each department, can be changed by increasing the hits, 1 hit= 1 pixel
private int hits[]// array to store the number of hits for each department
private double percentage[] // array to store the number of percentage for each department

private int x_gap // x co-ordinate of each bar
private int y_gap / y co-ordinate of each bar
private int gap_between_bars // the height between each bar when displayed in the applet
private String stat // string that states the current status of the applet

private int option // helps to choose between the 3 options, "Color, Text, Hits"
// Color =0, Text=1, Hits= 2



private class MenuHandler // inner class to handle menus. Listens to menu events
private class OptionHandler // inner class to handle Options in option menu.Listens to option events
private class ButtonHandler // inner class to handle buttons. Listens to button events



PUBLIC FEATURES - Methods

# public void init() - Initializes the applet and draws the buttons and the menus
# public void paint()
# public void update()
# public void paintBars() - draws the horizontal bars for each department
# public void calculateChanges() - increases the number of hits,calculates the total no of hits and calculate the percentages
# public boolean isAlpha() - returns true or false. A method written to check if a given input string contains only characters
# public void showStatus() - Shows the current staus of the applet and used to diaply error message on the message bar of the applet
*/


public class Assign2 extends JApplet {

private JButton buttons[]=new JButton[5];
private String labels[]= {"Footwear","Kitchen Goods","Stationery","Music","Ladies Wear"};
private JPanel thePanel;
private JMenu editMenu,optionsMenu;
public JMenuItem items[]=new JMenuItem[5];
private JRadioButton options[]= new JRadioButton[3];
private JMenuBar menubar;
private Color colors[]= {Color.yellow,Color.red,Color.magenta,Color.cyan,Color.green};


private int max_bar_width=250;
private int bar_height= 25;
private int bar_width[]= {100,100,100,100,100};
private int hits[]= {200,200,200,200,200};
private double percentage[]={80.00,80.00,80.00,80.00,80.00};

private int x_gap= 15;
private int y_gap=35;
private int gap_between_bars=15;
private String stat= "Applet started!";

private int option=0;

public void init(){
Container pane = getContentPane();// returns the ContentPane
thePanel = new JPanel(); // creates panel object
thePanel.setLayout(null); // setting the layout for the panel

menubar = new JMenuBar(); // creating a menu bar object
setJMenuBar(menubar); // addind the menu bar to the applet
editMenu = new JMenu ("Edit");
menubar.add(editMenu); // adding a the EDIT menu to the menu bar
optionsMenu = new JMenu("Options"); // creating th OPTIONS menu

for (int i=0; i <5;i++) { // the for loop create a button for each dept, sets the colors, set the size and add the buttons to the panel
buttons[i]= new JButton(labels[i]);// creates a new button object
buttons[i].setBackground(colors[i]); // sets the color
buttons[i].setSize(115,30);// Sets the size
thePanel.add(buttons[i]);// add the button to the panel
buttons[i].addActionListener(new ButtonHandler()); // adding a listener object to listen to button events for each button
}

buttons[0].setLocation(0,260); // set button location
buttons[1].setLocation(115,260);
buttons[2].setLocation(230,260);
buttons[3].setLocation(0,290);
buttons[4].setLocation(115,290);

for (int i=0; i <5;i++) {
items[i]= new JMenuItem(labels[i]); // create each menu item and setting its label
editMenu.add(items[i]); // add the menu items to the EDIT menu
items[i].addActionListener(new MenuHandler()); //adding a listener object to listen to menu events
}
editMenu.add(optionsMenu); // adding the OPTIONS menu to the EDIT menu


ButtonGroup group = new ButtonGroup(); // creating a group to hold the 3 radio buttons for options

options[0]=new JRadioButton("Color"); // creating a radio button for COLOR option
options[0].setSelected(true); // setting the Color option to be selected as default
options[0].addActionListener(new OptionHandler()); // adding a listener object to listen to option events
options[1]=new JRadioButton("Text");// creating a radio button for TEXT option
options[1].setSelected(false);// setting the Text option to be unselected as default
options[1].addActionListener(new OptionHandler());// adding a listener object to listen to option events

options[2]=new JRadioButton("Hits");// creating a radio button for HITS option
options[2].setSelected(false);// setting the Hits option to be unselected as default
options[2].addActionListener(new OptionHandler());// adding a listener object to listen to option events


group.add(options[0]); // add options to the group
group.add(options[1]);
group.add(options[2]);
optionsMenu.add(options[0]); // add option radio buttons to the OPTIONS menu
optionsMenu.add(options[1]);
optionsMenu.add(options[2]);

pane.add(thePanel); // add the panel to the container


}
public void paint(Graphics g){
super.paint(g); // calls the components paint method
calculateChanges();
paintBars(g);

}
public void update(Graphics g){
paint(g);

}


public void paintBars(Graphics g){ // method that draws the bars
Graphics2D g2d = ( Graphics2D ) g; // creating a 2d graphics object

for (int i=0;i<5;i++) { //paint bars
g2d.setPaint( colors[i] ); // set the color for each bar
/* the filling area for each bar is calculated as follows
fill3DRect(int x, int y, int width, int height)
int x = x_gap ( the x co-ordinate of the bar)
int y= y co-ordinate of the bar + (bar height + the distance between 2 bars)* bar number
i.e ; for bar 1 ---> just the y co-ordinate
for bar 2 ----> y co_ordinate + (bar height of bar 1 + the distance betwen bar1 and bar2 ) * 1 etc

drawString (String message, int x, int y)
String message = No of hits and the Percentage for each department
int x = bar width of each dept + 10 pixels( for clarity)+ x -co-ordinate of bar position
int y = y co-ordinate of the bar + bar height(cos the string is dispalyed at the bottom of the bar)+ ( bar height + the distance between 2 bars)
i.e ; for bar 1 ---> just the y co-ordinate
for bar 2 ----> y co_ordinate + bar height of 1 +(bar height of bar 1 + the distance betwen bar1 and bar2 ) * 1 etc

*/
g2d.fill3DRect( x_gap , y_gap+((bar_height+gap_between_bars)*(i)), bar_width[i], bar_height, true);// Paints the rectangle filled with the current color.
g.drawString(hits[i] + ", " + percentage[i]+"%",bar_width[i]+x_gap+10,y_gap + bar_height + ((bar_height+gap_between_bars)*(i)));// prints the number of hits and precentage.
}


} // end of paintbars


public void calculateChanges(){// method that calculates the total no of hits and calculate the percentages

int total =0;// initialize total to 0
for(int i=0; i<5; i++) {
bar_width[i]=hits[i];// set hit=pixel
total += hits[i];


}//for


//calculating percentages
for (int i=0 ; i<5;i++) {
percentage[i]=(hits[i]*100.0) / total;
buttons[i].setText(labels[i]); // set label for button
buttons[i].setBackground(colors[i]); //set button background
items[i].setText(labels[i]); //set menu item labels

}// end for




}// end of calculatechanges



public boolean isAlpha(String str) {
//input: string, output: true/false
//Loops therough the character array and return false if invalid character found.

boolean blnAlpha = true;// define and initialize blnAlpha

char chr[] = null;// define char array and initialize to null
if(str != null)// check whether the string is null
chr = str.toCharArray();// break the string and insert into the chr array


for(int i=0; i<chr.length; i++) {

if((chr[i] < 'A' || chr[i] > 'Z') && (chr[i] < 'a' || chr[i] > 'z')){
if (!(chr[i]==' ')) { // check for space
blnAlpha = false;
//System.out.println(">>" + chr[i] + ">>"); // when debugging
}
}
}
return blnAlpha;
}//end isAlpha



//inner class to handle menus
private class MenuHandler implements ActionListener{
public void actionPerformed (ActionEvent event){
if (option==0){
for (int i=0; i<5;i++){
if(event.getSource()==items[i]){
Color c= JColorChooser.showDialog(Assign2.this, "Choose a color for " + labels[i],colors[i]);
if (c!=null){
colors[i] = c; //set new color to array
buttons[i].setBackground(c); //change button background color
repaint();


}//check for c being null


}//getsource


}//end for



}//enf of option==0
if (option==1){
for (int i=0; i <5; i++){
if(event.getSource()==items[i]){
String label = JOptionPane.showInputDialog(Assign2.this, "Edit Department Name - "
+ labels[i] ,"Department Name",1);
if(label!= null){
if(isAlpha(label)) {
labels[i]=label;
items[i].setText(label); //set menu label
buttons[i].setText(label); //set button label
repaint();
}
else{
showStatus("Make sure you've ONLY entered characters!!");

}//else

}//if



}// get source



}//for

}//end of option==1

if(option==2){
for(int i=0; i < 5; i++){
if(event.getSource()==items[i]){
try {
int h= Integer.parseInt (JOptionPane.showInputDialog(Assign2.this,"Edit Department Hits - " +
labels[i],"Department Hits",1));
if ((h<=250) && (h>0)) { //check for validity
hits[i] = h; //assign new value to hits array
calculateChanges();
repaint();
} else {
showStatus("Hits should be between 1 and 250!"); //show error
}


} catch(NumberFormatException e){

showStatus("You must input a number!!");

}





}// getting soure

}//end for
}//end of option==2


}//end of actionPerformed




}//end of MenuHandler


private class OptionHandler implements ActionListener {

// respond to checkbox events
public void actionPerformed( ActionEvent e )
{
//showStatus("Applet Running!");

if ( e.getSource() == options[0] ) { // option Color clicked
options[1].setSelected(false);
options[2].setSelected(false);
options[0].setSelected(true);
option = 0;
}
else if ( e.getSource() == options[1]) { //Option Text Clicked
options[1].setSelected(true);
options[2].setSelected(false);
options[0].setSelected(false);
option = 1;
}
else if ( e.getSource() == options[2] ) { //Option Hits Clicked
options[1].setSelected(false);
options[2].setSelected(true);
options[0].setSelected(false);
option = 2;
}
}//end action performed
} // OptionListner


class ButtonHandler implements ActionListener {

// respond to checkbox events
public void actionPerformed( ActionEvent e ) {
showStatus("Applet Running!");

for (int i=0;i<5;i++) {
if (e.getSource()==buttons[i]) { //loop until correct button is found
if (hits[i]>0 && hits[i] < max_bar_width) { //hits cant be more than 250
hits[i]++; //increment hits
calculateChanges(); //calculate new bar widths
repaint();
}else{
showStatus("Hits have to be between 1 and 250!"); //give error
}
}
}//end for
}//end action performed
} // ButtonHandler

public void showStatus(String Status) {
stat = Status;
getAppletContext().showStatus(stat);
}//end showStatus




} //end Assign2


here when you run the applet and click on the menu, its hidden Beneath the bars that are drawn. but once you click on a menu item and come back it works fine... what is the problem with the code ?? how can i fix this???
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
ranindu is offline Offline
3 posts
since May 2007
May 6th, 2007
0

Re: need help to solve this problem

Use code tags not many ppl will be able to read that coherently.
Featured Poster
Reputation Points: 1536
Solved Threads: 431
Posting Expert
iamthwee is offline Offline
5,865 posts
since Aug 2005

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Java Forum Timeline: Boolean array?
Next Thread in Java Forum Timeline: JTextArea problems





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC