Assignment 06 – Communicating between Classes – second round What will be assess
ID: 673092 • Letter: A
Question
Assignment 06 – Communicating between Classes – second round
What will be assessed
Communication between classes.
Deliverables
app.java, myJFrame.java and myJPanel.java as requested below.
Contents
You are required to use my java files that are on the Angel folder for Assignment 6.
It is a follow up of the assignment from last week.
Some of the requirements are the same:
there only one version of a student.
student information is shown in the upper button (in myJPanel1).
when the user clicks on the upper button in myJPanel1, then WhatsUp() is shown the lower button (in myJPanel2).
The difference here is that you are required to:
do everything the in second panel, myJPanel2.
No changes in myJPanel1.java
I have already created a student myJPanel2 for you.
Therefore:
You have to change one line in myJPanel (the panel that creates the two other panels
A lot of changes in myJPanel2
NO changes in myJPanel1
As you might have guessed by now one of the new things here is that you will have to implement in the second panel a listener for a button in the first panel.
here is the code
1.app.jave
public class app
{
public static void main(String args[])
{
myJFrame mjf = new myJFrame();
}
}
2.myjrame
import java.awt.*;
import javax.swing.*;
public class myJFrame extends JFrame
{
public myJFrame ()
{
super ("My First Frame");
myJPanel mjp = new myJPanel();
getContentPane().add(mjp,"Center");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize (640, 480);
setVisible(true);
}
}
3.myjpanel
import java.awt.*;
import javax.swing.*;
public class myJPanel extends JPanel
{
public myJPanel()
{
super();
setBackground(Color.gray);
setLayout(new BorderLayout());
myJPanel1 p1 = new myJPanel1();
myJPanel2 p2 = new myJPanel2();
add(p1,"North");
add(p2,"Center");
}
}
4.myjpanel1
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class myJPanel1 extends JPanel
{
JButton b1;
public myJPanel1()
{
super();
setBackground(Color.yellow);
b1 = new JButton("student info will be here later ...");
add(b1);
}
}
5.myjpanel2
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class myJPanel2 extends JPanel
{
JButton b2;
student st1;
public myJPanel2()
{
super();
st1 = new student("Fred","Fonseca",44);
setBackground(Color.pink);
b2 = new JButton("whats Up will be shown here" );
add(b2);
}
}
6.student.java
import java.awt.*;
import javax.swing.*;
public class student
{
String firstName;
String lastName;
int age;
public student(String a, String b, int x)
{
super();
firstName = a;
lastName = b;
age = x;
}
String getInfo()
{
return "NAME = "+firstName+ " "+lastName+" "+"Age = "+age;
}
String whatsUp()
{
double r = Math.random();
int myNumber = (int) (r * 3f); //comment: a random number between 0 and 2
String answer = "I don't know";
if(myNumber == 0) answer = "searching the web";
if(myNumber == 1) answer = "doing Java";
if(myNumber == 2) answer = "Listening to endless lecture";
return answer;
}
}
Explanation / Answer
Answer:
Changes in myJPanel.java so that myJPanel2 implement a listener for myJPanel1
myJPanel.java
import java.awt.*;
import javax.swing.*;
public class myJPanel extends JPanel
{
public myJPanel()
{
super();
setBackground(Color.gray);
setLayout(new BorderLayout());
myJPanel1 p1 = new myJPanel1();
myJPanel2 p2 = new myJPanel2(p1);
add(p1,"North");
add(p2,"Center");
}
}
Here is myJPanel2 that implement a listener for a button in the first panel
myJPanel2.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class myJPanel2 extends JPanel implements ActionListener
{
JButton b2;
student st1;
myJPanel1 mJP1;
public myJPanel2(myJPanel1 panel1)
{
super();
st1 = new student("Fred","Fonseca",44);
setBackground(Color.pink);
mJP1=panel1;
b2 = new JButton("whats Up will be shown here" );
mJP1.b1.addActionListener(this);
add(b2);
}
public void ActionPerformed(ActionEvent aEve)
{
b2.setText(st1.whatsUp());
}
}
The Complete Code is as follows,
1.app.java
public class app
{
public static void main(String args[])
{
myJFrame mjf = new myJFrame();
}
}
2.myJFrame.java
import java.awt.*;
import javax.swing.*;
public class myJFrame extends JFrame
{
public myJFrame ()
{
super ("My First Frame");
myJPanel mjp = new myJPanel();
getContentPane().add(mjp,"Center");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize (640, 480);
setVisible(true);
}
}
3. myJPanel.java
import java.awt.*;
import javax.swing.*;
public class myJPanel extends JPanel
{
public myJPanel()
{
super();
setBackground(Color.gray);
setLayout(new BorderLayout());
myJPanel1 p1 = new myJPanel1();
myJPanel2 p2 = new myJPanel2(p1);
add(p1,"North");
add(p2,"Center");
}
}
4.myJPanel1.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class myJPanel1 extends JPanel
{
JButton b1;
public myJPanel1()
{
super();
setBackground(Color.yellow);
b1 = new JButton("student info will be here later ...");
add(b1);
}
}
5. myJPanel2.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class myJPanel2 extends JPanel implements ActionListener
{
JButton b2;
student st1;
myJPanel1 mJP1;
public myJPanel2()
{
super();
st1 = new student("Fred","Fonseca",44);
setBackground(Color.pink);
b2 = new JButton("whats Up will be shown here" );
mJP1.b1.addActionListener(this);
add(b2);
}
public void ActionPerformed(ActionEvent aEve)
{
b2.setText(st1.whatsUp());
}
}
6.student.java
import java.awt.*;
import javax.swing.*;
public class student
{
String firstName;
String lastName;
int age;
public student(String a, String b, int x)
{
super();
firstName = a;
lastName = b;
age = x;
}
String getInfo()
{
return "NAME = "+firstName+ " "+lastName+" "+"Age = "+age;
}
String whatsUp()
{
double r = Math.random();
int myNumber = (int) (r * 3f); //comment: a random number between 0 and 2
String answer = "I don't know";
if(myNumber == 0) answer = "searching the web";
if(myNumber == 1) answer = "doing Java";
if(myNumber == 2) answer = "Listening to endless lecture";
return answer;
}
}