In: Computer Science
Modify the following 'MessageBoxes' application so it uses a single action listener for each button. This will require you to separate the single action listener logic into multiple listeners, one for each button. Then modify the code to provide additional options to two or more buttons.
/*
* The source code for this assignment started with
* a sample from "Thinking in Java" 3rd ed. page 825
* by Bruce Eckel. I have finished adding the rest of the action
logic.
*
* Try to implement one new action listener at a time
* do not try to do all of them and then compile
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MessageBoxes{
private JButton[] b = {
new JButton("Alert"),
new JButton("Yes/No"),
new JButton("Color"),
new JButton("Input"),
new JButton("3 Vals"),
};
private JTextField txt = new JTextField(15);
private JFrame frame;
private ActionListener al = new ActionListener(){
public void actionPerformed(ActionEvent
e){
String id =
((JButton)e.getSource()).getText();
if(id.equals("Alert")){
JOptionPane.showMessageDialog(null,
"There's a bug on you!", "Hey!",
JOptionPane.ERROR_MESSAGE);
}
else if(id.equals("Yes/No")){
int val =
JOptionPane.showConfirmDialog(null,
"or no", "Chose yes",
JOptionPane.YES_NO_OPTION);
if(val != JOptionPane.CLOSED_OPTION){
if(val == 0){
txt.setText("Yes");
}
else{
txt.setText("No");
}
}
}
else if(id.equals("Color")){
Object[] options = {"Red", "Green"};
int sel =
JOptionPane.showOptionDialog(null,
"Choose a Color!", "Warning",
JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE, null,
options, options[0]);
if(sel != JOptionPane.CLOSED_OPTION){
txt.setText("Color Selected: " + options[sel]);
}
}
else if(id.equals("Input")){
String val = JOptionPane.showInputDialog("How mant fingers do you see?");
txt.setText(val);
}
else if(id.equals("3 Vals")){
Object[] selections = {"First", "Second", "Third"};
Object val =
JOptionPane.showInputDialog(null,
"Choose one", "Input",
JOptionPane.INFORMATION_MESSAGE,
null, selections, selections[0]);
if(val != null){
txt.setText(val.toString());
}
}
}
};
public MessageBoxes(){
frame = new JFrame("Title");
frame.setSize(250, 250);
frame.getContentPane().setLayout(new FlowLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for(int i = 0; i < b.length; i++){
frame.getContentPane().add(b[i]);
}
frame.getContentPane().add(txt);
frame.setVisible(true);
}
public void launchJFrame(){
for(int i = 0; i < b.length; i++){
b[i].addActionListener(al);
}
}
public static void main(String [] args){
MessageBoxes messageBoxes = new
MessageBoxes();
messageBoxes.launchJFrame();
}
}
/*
* The source code for this assignment started with
* a sample from "Thinking in Java" 3rd ed. page 825
* by Bruce Eckel. I have finished adding the rest of the action
logic.
*
* Try to implement one new action listener at a time
* do not try to do all of them and then compile
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MessageBoxes{
private JButton[] b = {
new JButton("Alert"),
new JButton("Yes/No"),
new JButton("Color"),
new JButton("Input"),
new JButton("3 Vals"),
};
private JTextField txt = new JTextField(15);
private JFrame frame;
private ActionListener al1 = new ActionListener(){
public void actionPerformed(ActionEvent e){
//alert
JOptionPane.showMessageDialog(null,
"There's a bug on you!", "Hey!",
JOptionPane.ERROR_MESSAGE);
}
};
private ActionListener al2 = new ActionListener(){
public void actionPerformed(ActionEvent e){
//yes/no
int val = JOptionPane.showConfirmDialog(null,
"or no", "Chose yes",
JOptionPane.YES_NO_OPTION);
if(val != JOptionPane.CLOSED_OPTION){
if(val == 0){
txt.setText("Yes");
}
else{
txt.setText("No");
}
}
}
};
private ActionListener al3 = new ActionListener(){
public void actionPerformed(ActionEvent e){
//color
Object[] options = {"Red", "Green"};
int sel = JOptionPane.showOptionDialog(null,
"Choose a Color!", "Warning",
JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE, null,
options, options[0]);
if(sel != JOptionPane.CLOSED_OPTION){
txt.setText("Color Selected: " + options[sel]);
}
}
};
private ActionListener al4 = new ActionListener(){
public void actionPerformed(ActionEvent e){
//input
String val = JOptionPane.showInputDialog("How mant fingers do you see?");
txt.setText(val);
}
};
private ActionListener al5 = new ActionListener(){
public void actionPerformed(ActionEvent e){
//3val
Object[] selections = {"First", "Second", "Third"};
Object val = JOptionPane.showInputDialog(null,
"Choose one", "Input",
JOptionPane.INFORMATION_MESSAGE,
null, selections, selections[0]);
if(val != null){
txt.setText(val.toString());
}
}
};
public MessageBoxes(){
frame = new JFrame("Title");
frame.setSize(250, 250);
frame.getContentPane().setLayout(new FlowLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for(int i = 0; i < b.length; i++){
frame.getContentPane().add(b[i]);
}
frame.getContentPane().add(txt);
frame.setVisible(true);
}
public void launchJFrame(){
ActionListener al[] = new ActionListener[5];
al[0] = al1;
al[1] = al2;
al[2] = al3;
al[3] = al4;
al[4] = al5;
for(int i = 0; i < b.length; i++){
b[i].addActionListener(al[i]);
}
}
public static void main(String [] args){
MessageBoxes messageBoxes = new MessageBoxes();
messageBoxes.launchJFrame();
}
}