Solved

JButton

Posted on 2013-11-21
3
200 Views
Last Modified: 2013-11-22
I am having trouble using
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.event.*;


public class Market extends JFrame{
       
    public Market(){
         
            
    }
    
      public static void main(String[] args){
          
          float values[] = {98,62,82,69,45,12,98,69,87,85,100,96,97,98,99};
	  Person [] people = new Person[2];
	  people[0] = new Teacher("Test ", "Test", 98);
	  people[1] = new Student("Test2 ", "Test2", 45);
	  ((Student)people[1]).inputGradeList(values);
	  for (int i=0; i< people.length; ++i) System.out.println (people[i]);
      
      Market frame = new Market(); 
      frame.setTitle("Listing");
      frame.setSize(400, 400);
      frame.setLocationRelativeTo(null);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
      
      
      JPanel p1 = new JPanel(new FlowLayout(FlowLayout.CENTER, 1, 1)); 
      p1.add(new JLabel("" + people[0]), BorderLayout.SOUTH);
      p1.setBackground(Color.BLACK);
      p1.setForeground(Color.PINK);
      p1.setBorder(new TitledBorder("Name"));  

      frame.add(p1);
      JButton jbtRight = new JButton("Next");
      jbtRight.setBackground(Color.BLACK);
      jbtRight.setForeground(Color.WHITE);
      p1.add(jbtRight);
      
      ActionListener listener1 = new NewListener();
      jbtRight.addActionListener(listener1);
 
    class NewListener implements ActionListener {
    public void actionPerformed(Action e)
    {
        for (int i=0; i < people.length; ++i)
            System.out.println (people[i]);
    }
      }
  }

Open in new window

JButton to advance through an array. Here is what I have.
0
Comment
Question by:lostinspace9
  • 2
3 Comments
 
LVL 14

Expert Comment

by:jb1dev
ID: 39667573
If you wish to create you ActionListener like this:
        ActionListener listener1 = new NewListener();
Then you will need to put the class definition outside of the main() method. Either in another file, or you can make it an inner class in your Market class. If you make it an inner class, be sure it is defined as "static" otherwise you cannot instantiate it from within the static main() method.

(Alternatively, you can implement it as an anonymous inner class, providing the implementation within the main() method. I'm not sure if that's the purpose of this assignment, but I can provide info on how to do that as well.)

Then you will also need to define a constructor for NewListener() and pass it your "people" array. Store that in a member variable of your NewListener class, such that the actionPerformed() will have access to it, and be able to print it.

Also the actionPerformed() method takes an ActionEvent as parameter, not an Action.
http://docs.oracle.com/javase/7/docs/api//java/awt/event/ActionListener.html
You will need to change the method signature otherwise the compiler will complain that NewListener does not implement ActionListener.
0
 
LVL 14

Accepted Solution

by:
jb1dev earned 500 total points
ID: 39667589
This should get you started.
I have removed / altered some of your main() method code and used a dummy Person class, since I do not have access to that class definition.

You should delete my Person class which is defined as an inner class in the Market class.
And you should change your main() method to use the appropriate Person/Teacher/Student class definitions which were presumably provided as part of the assignment.

So really this is only an example of how you might refactor your NewListener definition. And get it to compile.

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

public class Market extends JFrame{
       
    public Market(){
         
    }
   
    public static class Person {
        String s1, s2;
        int i1;
        public Person(String s1, String s2, int i1) {
            this.s1 = s1; 
            this.s2 = s2;
            this.i1 = i1;
        }
    }

    public static void main(String[] args){
          
        float values[] = {98,62,82,69,45,12,98,69,87,85,100,96,97,98,99};
        Person [] people = new Person[2];
        people[0] = new Person("Test ", "Test", 98);
        people[1] = new Person("Test2 ", "Test2", 45);
        // ((Student)people[1]).inputGradeList(values);

        for (int i=0; i< people.length; ++i) System.out.println (people[i]);
      
        Market frame = new Market(); 
        frame.setTitle("Listing");
        frame.setSize(400, 400);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        
        
        JPanel p1 = new JPanel(new FlowLayout(FlowLayout.CENTER, 1, 1)); 
        p1.add(new JLabel("" + people[0]), BorderLayout.SOUTH);
        p1.setBackground(Color.BLACK);
        p1.setForeground(Color.PINK);
        p1.setBorder(new TitledBorder("Name"));  
    
        frame.add(p1);
        JButton jbtRight = new JButton("Next");
        jbtRight.setBackground(Color.BLACK);
        jbtRight.setForeground(Color.WHITE);
        p1.add(jbtRight);
        
        ActionListener listener1 = new NewListener(people);


        jbtRight.addActionListener(listener1);
    
    }

    public static class NewListener implements ActionListener {
        Person[] m_people;
        public NewListener(Person[] people) {
            this.m_people = people;
        }

        public void actionPerformed(ActionEvent e)
        {
            for (int i=0; i < m_people.length; ++i)
                    System.out.println (m_people[i]);
        }
    }

}

Open in new window

0
 

Author Comment

by:lostinspace9
ID: 39669263
This is great! Thank you.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
network + 7 79
Java - sorting a list of objects where the properties of the objects can change during the sort 7 45
simple java question 3 43
ForLoop Example 3 40
For customizing the look of your lightweight component and making it look lucid like it was made of glass. Or: how to make your component more Apple-ish ;) This tip assumes your component to be of rectangular shape and completely opaque. (COD…
INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
This video teaches viewers about errors in exception handling.

947 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

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now