![]() |
| ||
| need help to solve this problem 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??? :( |
| ||
| Re: need help to solve this problem Use code tags not many ppl will be able to read that coherently. |
| All times are GMT -4. The time now is 3:10 pm. |
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC