Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Program :1 FlashCard This program implements a flash card to teach multiplication. Write a program that uses a WidgetView object (the WidgetView class is available

Program :1

FlashCard

This program implements a flash card to teach multiplication.

Write a program that uses a WidgetView object (the WidgetView class is available elsewhere in this Lesson).

your program should use a Random object to generate two random numbers between 0 and 9 (inclusive).

To explain the operation of this program, we'll assume that our random number generator generated 6 and 3.

display a JLabel with the text "What is 6 times 3?"

create an empty JTextField to hold the user's answer

create a JButton that has the text "click after answering"

The user should put his or her guess in the JTextField and click the JButton.

When the button is clicked, the program should get the text from the JTextField, convert it from String to int, and create a JLabel that says either

That's right. Good Job, or

Sorry, the correct answer is 18

depending on whether the user input the correct number (18 in this case).

Program 2:

Write a program that uses a WidgetView object to do the following:

Generate two random integers between 1 and 9 (inclusive). Name one of them x, the other y. Display them to the user using JLabel objects.

Create a JLabel object displaying the text "Enter an operation number."

Create a JTextField for the user's input.

Create a JButton displaying the text "Press here when you've entered your operation." Use addAndWait to add it to the WidgetView object.

When the user clicks the JButton, evaluate operation in the following order to determine the one and only mathematical operation to perform on x and y. Use a JLabel to display the result.

If operation is between 1 and 10 inclusive, add x and y.

If operation is evenly divisible by 4, subtract y from x.

If operation is evenly divisible by 5, use integer division to divide y into x.

If operation is an even number, use floating point division to divide y into x.

If none of the other tests on operation apply, multiply x and y.

Note: Operation can be negative or zero.

import java.awt.event.ActionListener;

import java.util.concurrent.locks.Condition;

import java.util.concurrent.locks.Lock;

import java.util.concurrent.locks.ReentrantLock;

import javax.swing.AbstractButton;

import javax.swing.JComponent;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;

/**

* A really simple class to display Swing widgets in a FlowLayout GUI.

*

*

* @author parks

*/

public class WidgetView {

public static final int DEFAULT_X_SIZE = 600;

public static final int DEFAULT_Y_SIZE = 400;

private JFrame jframe;

private JPanel anchor;

private boolean userClicked = false;

private Lock lock;

private Condition waitingForUser;

private JComponent userInputComponent = null;

private ActionListener eventHandler;

/**

* Default constructor will display an empty JFrame that has a Flow layout

* JPanel as its content pane and initialize the frame to a default size.

*/

public WidgetView() {

this(DEFAULT_X_SIZE, DEFAULT_Y_SIZE);

}

/**

* Constructor will display an empty JFrame that has a Flow layout JPanel as its

* content pane and initialize the frame to a given size.

*/

public WidgetView(int pixelSizeInX, int pixelSizeInY) {

lock = new ReentrantLock();

waitingForUser = lock.newCondition();

// lambda expression requires Java 8

eventHandler = e -> {

if (e.getSource() != userInputComponent) {

return;

}

lock.lock();

try {

while (userClicked) {

waitingForUser.await();

}

} catch (InterruptedException e1) {

System.err.println("WidgetView reports that something really bad just happened");

e1.printStackTrace();

System.exit(0);

} finally {

userClicked = true;

waitingForUser.signalAll();

lock.unlock();

}

};

/*

* java 7 solution eventHandler = new ActionListener() {

*

* @Override public void actionPerformed(ActionEvent e) { if (e.getSource() !=

* userInputComponent) { return; } lock.lock(); userClicked = true;

* waitingForUser.signalAll(); lock.unlock(); } };

*/

jframe = new JFrame();

anchor = new JPanel();

jframe.setContentPane(anchor);

jframe.setSize(pixelSizeInX, pixelSizeInY);

jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jframe.setVisible(true);

}

/**

* Add a Swing widget to the GUI.

*

* @param jcomp

* Swing widget (subclasses of JComponent--like JLabel and

* JTextField) to be added to the JFrame

*/

public void add(JComponent jcomp) {

anchor.add(jcomp);

jframe.setContentPane(anchor);

}

/**

* Add an Abstract Button (like a JButton) to the JFrame. Create an action

* listener to wait (suspend the caller) until it is clicked.

*

* @param absButton

* Button (like a JButton) to add to the JFrame

*/

public void addAndWait(AbstractButton absButton) {

userInputComponent = absButton;

absButton.addActionListener(eventHandler);

addWait(absButton);

}

/**

* Add a JTextField to the JFrame, and wait for the user to put the cursor in

* the field and click Enter. The caller is suspended until enter is clicked.

*

* @param jTextField

* Field to add to the JFrame

*/

public void addAndWait(JTextField jTextField) {

userInputComponent = jTextField;

jTextField.addActionListener(eventHandler);

addWait(jTextField);

}

private void addWait(JComponent jcomp) {

add(jcomp);

lock.lock();

try {

while (!userClicked) {

waitingForUser.await();

}

} catch (InterruptedException e1) {

System.err.println("WidgetView reports that something really bad just happened");

System.err.println(e1);

e1.printStackTrace();

System.exit(0);

} finally {

userClicked = false;

waitingForUser.signalAll();

lock.unlock();

}

}

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Advances In Databases And Information Systems Uropean Conference Adbis 2020 Lyon France August 25 27 2020 Proceedings Lncs 12245

Authors: Jerome Darmont ,Boris Novikov ,Robert Wrembel

1st Edition

3030548317, 978-3030548315

More Books

Students also viewed these Databases questions