Question 1
(a)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ChooseColor extends JFrame implements ActionListener {
private JLabel label = new JLabel();
private JPanel panel = new JPanel(new GridLayout(1,0));
private JButton[] buttons= new JButton[3];
private Container contentPane = getContentPane();
public ChooseColor() {
buttons[0] = new JButton("Red");
buttons[0].setBackground(Color.red);
buttons[1] = new JButton("Green");
buttons[1].setBackground(Color.green);
buttons[2] = new JButton("Blue");
buttons[2].setBackground(Color.blue);
label.setOpaque(true);
contentPane.add(label);
for(int i = 0; i < 3; i++) {
panel.add(buttons[i]);
buttons[i].addActionListener(this);
}
contentPane.add(panel, BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Red")) {
label.setBackground(Color.red);
} else if(e.getActionCommand().equals("Green")) {
label.setBackground(Color.green);
} else {
label.setBackground(Color.blue);
}
}
public static void main(String[] args) {
JFrame f = new ChooseColor();
f.setSize(250,150);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
(b)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ChooseColor extends JFrame {
private JLabel label = new JLabel();
private JPanel panel = new JPanel(new GridLayout(1,0));
private JButton[] buttons= new JButton[3];
private Container contentPane = getContentPane();
public ChooseColor() {
buttons[0] = new JButton("Red");
buttons[0].setBackground(Color.red);
buttons[0].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
label.setBackground(Color.red);
}
});
buttons[1] = new JButton("Green");
buttons[1].setBackground(Color.green);
buttons[1].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
label.setBackground(Color.green);
}
});
buttons[2] = new JButton("Blue");
buttons[2].setBackground(Color.blue);
buttons[2].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
label.setBackground(Color.blue);
}
});
label.setOpaque(true);
contentPane.add(label);
for(int i = 0; i < 3; i++) {
panel.add(buttons[i]);
}
contentPane.add(panel, BorderLayout.SOUTH);
}
public static void main(String[] args) {
JFrame f = new ChooseColor();
f.setSize(250,150);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Question 2
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Click extends JFrame implements ActionListener {
JButton[] buttons = new JButton[3];
Container contentPane = getContentPane();
public Click() {
contentPane.setLayout(new GridLayout(0,1));
for(int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton("0");
buttons[i].addActionListener(this);
contentPane.add(buttons[i]);
}
}
public void actionPerformed(ActionEvent e) {
// we can use e.getActionCommand
// try to show you different methods of doing it
JButton button = (JButton)e.getSource();
int num = Integer.parseInt(button.getText());
button.setText(Integer.toString(num+1));
}
public static void main(String[] args) {
JFrame f = new Click();
f.pack();
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Question 3
(a)

(b)

Question 4
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class WhoAmI extends JFrame implements ActionListener {
private JLabel topLabel = new JLabel();
private JPanel middlePanel = new JPanel(new GridLayout(2,5)) ;
private JLabel bottomLabel = new JLabel();
private JButton[] buttons;
private Container contentPane = getContentPane();
private String[] names = {"Apu", "Bart", "Burns", "Homer", "Krusty", "Lisa", "Maggie", "Marge", "Moe", "Ned"};
private String who;
private int trial = 0;
private int correct = 0;
public WhoAmI() {
buttons = new JButton[names.length];
for(int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton(new ImageIcon("simpson/" + names[i] + ".gif"));
buttons[i].setActionCommand(names[i]);
buttons[i].addActionListener(this);
middlePanel.add(buttons[i]);
}
contentPane.add(topLabel, BorderLayout.NORTH);
contentPane.add(bottomLabel, BorderLayout.SOUTH);
contentPane.add(middlePanel);
setWho();
topLabel.setText("Who is " + who + "?");
bottomLabel.setText("Num of trials : " + trial + " " + "Correct answers : " + correct );
}
public void setWho() {
who = names[(int)(names.length*Math.random())];
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals(who)) {
correct++;
trial++;
setWho();
topLabel.setText("You are right! Next question: who is " + who + "?");
} else {
trial++;
setWho();
topLabel.setText("You are wrong! Next question: who is " + who + "?");
}
bottomLabel.setText("Num of trials : " + trial + " " + "Correct answers : " + correct );
}
public static void main(String[] args) {
JFrame f = new WhoAmI();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(280,180);
f.setVisible(true);
}
}
Question 5
a)

b)
A : increase the number on display by 3.
B : increase the number on display by 2.
C : reset the number on display to 3.
c)
8
d)
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ActionTest2 extends JFrame {
JButton buttonA = new JButton("A");
JButton buttonB = new JButton("B");
JButton buttonC = new JButton("C");
JLabel display = new JLabel("0", JLabel.CENTER);
Container contentPane = getContentPane();
public ActionTest2() {
contentPane.add(buttonA, BorderLayout.CENTER);
contentPane.add(buttonB, BorderLayout.EAST);
contentPane.add(buttonC, BorderLayout.WEST);
contentPane.add(display, BorderLayout.SOUTH);
buttonA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int num = Integer.parseInt(display.getText()) + 3;
display.setText("" + num);
}
});
buttonB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int num = Integer.parseInt(display.getText()) + 2;
display.setText("" + num);
}
});
buttonC.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
display.setText("" + 3);
}
});
}
public static void main(String[] args) {
ActionTest2 f = new ActionTest2();
f.setSize(200,100);
f.setVisible(true);
}
}