SHARE
SPREAD
HELP

The Tradition of Sharing

Help your friends and juniors by posting answers to the questions that you know. Also post questions that are not available.


To start with, Sr2Jr’s first step is to reduce the expenses related to education. To achieve this goal Sr2Jr organized the textbook’s question and answers. Sr2Jr is community based and need your support to fill the question and answers. The question and answers posted will be available free of cost to all.

 

#
Authors:
Walter Savitch ,kenrick Mock
Chapter:
Swing I
Exercise:
Programming Projects
Question:1 | ISBN:9780132830317 | Edition: 5

Question

Design and code a Swing GUI to translate text that is input in English into Pig Latin. You can assume that the sentence contains no punctuation. The rules for Pig Latin are as follows:

a. For words that begin with consonants, move the leading consonant to the end of the word and add “ay.” Thus, “ball” becomes “allbay”; “button” becomes “uttonbay”; and so forth.

b. For words that begin with vowels, add “way” to the end of the word. Thus, “all” becomes “allway”; “one” becomes “oneway”; and so forth.

Use a FlowLayout with a JTextArea for the source text and a separate JtextArea for the translated text. Add a JButton with an event to perform the translation. A sample application is shown next with the text translated to Pig Latin.

To parse the source text, note that you can use the Scanner class on a String. For example the following code

Scanner scan = new Scanner("foo bar zot");

while (scan.hasNext())

{

System.out.println(scan.next());

}

will output

foo

bar

zot


TextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbook

Answer

import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class EnglishToPigLatin extends JFrame{
	
	private JTextArea inputArea, outputArea;
	private JButton bTranslate;
	
	public EnglishToPigLatin() throws IOException{
		
		super("English to Pig Latin Conversion"); 
		
		Container container = getContentPane();
		container.setLayout(new FlowLayout());
		
		inputArea = new JTextArea(10, 20);
		inputArea.setEditable(true);
		inputArea.setLineWrap(true);
		inputArea.setWrapStyleWord(true);
		container.add(inputArea);
		
		bTranslate = new JButton("Translate");
		container.add(bTranslate);

		bTranslate.addActionListener( 
			new ActionListener(){
				public void actionPerformed(ActionEvent e){
					Scanner sc = new Scanner(inputArea.getText());
					String output = "";

					while (sc.hasNext())
						output += toPigLatin(sc.next()) + " ";

					outputArea.setText(output);
				}
			}
		);	
		
		outputArea = new JTextArea(10, 20);
		outputArea.setEditable(false);
		outputArea.setLineWrap(true);
		outputArea.setWrapStyleWord(true);
		container.add(outputArea);
		
		setSize(300, 450);
		setVisible(true);
	}

	public static String toPigLatin (String str)
	{
		String result = "";

		if (isVowel(str.charAt(0)))
			result = str + "way";
		else
		{
			for (int i=1; i<str.length(); i++)
				result += str.charAt(i);

			result += str.charAt(0) + "ay";
		}

		return result;
	}

	public static boolean isVowel (char ch)
	{
		String vowels = "aAeEiIoOuU";

		if (vowels.indexOf(ch) == -1)
			return false;
		else
			return true;
	}
	
	public static void main(String args[]){
		try{
			EnglishToPigLatin window = new EnglishToPigLatin();
			window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		}
		catch(Exception e){
			JOptionPane.showMessageDialog(null, "Error" + e, "Error", JOptionPane.ERROR_MESSAGE);
		}
	}
}
0 0

Discussions

Post the discussion to improve the above solution.