Write a program that reverses a text file by using a stack. The user interface m
ID: 3767210 • Letter: W
Question
Write a program that reverses a text file by using a stack. The user interface must consist of 2 list boxes and 3 buttons.
The 3 buttons are:
Read - reads the text file into list box 1.
Reverse - reverses the items in list box 1 by pushing them onto stack 1, then popping them from stack 1 (in the reverse order) and adding them to list box 2.
Write - writes the contents of list box 2 to a new text file.
At first, only the Read button is enabled. After it is clicked, it is disabled and the Reverse button is enabled. After it is clicked, it is disabled and the Write button is enabled. After it is clicked, it is disabled.
The name of the input text file is "input.txt". The input text file will contain no more than 100 lines of text. This fact is not needed by the program. It simply means that memory usage is not an issue.
The name of the output text file is "output.txt".
have the output after writing the codes. ***********************************************
these are some of the hints that i have recive by my professor************************
please have the output disaply one by one button what it does.
Explanation / Answer
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.*;
public class ReverseFileViaStack extends JFrame
implements ActionListener
{
//Borders:
private Border borderCenter = BorderFactory.createEmptyBorder(10,10,10,10);
private Border borderContents = BorderFactory.createEmptyBorder(0, 0, 10, 0);
private Border borderList = BorderFactory.createLineBorder(Color.BLUE, 1);
//Containers:
private Box boxButtons = Box.createHorizontalBox();
private Box boxOriginal = Box.createVerticalBox();
private Box boxReverse = Box.createVerticalBox();
private JPanel contents;
private JPanel panelCenter;
private JPanel panelSouth;
//Components:
private JButton btnRead;
private JButton btnReverse;
private JButton btnWrite;
private JLabel lblTitle;
private JLabel lblOriginal;
private JLabel lblReverse;
// Lists:
private JList<String> listOriginal;
private JList<String> listReverse;
// List models:
private DefaultListModel<String> listModelOriginal = new DefaultListModel<>();
private DefaultListModel<String> listModelReverse = new DefaultListModel<>();
// Fonts:
private final Font fontBold = new Font(Font.DIALOG, Font.BOLD, 14);
private final Font fontPlain = new Font(Font.DIALOG, Font.PLAIN, 14);
// Stack (from the Java Collections Framework):
private Stack<String> stack = new Stack<>();
// Constructor.
public ReverseFileViaStack()
{
// It should setup the entire UI.
super ("Reverse File via Stack");
setFonts();
//Main Container:
contents = new JPanel();
contents.setBorder(borderContents);
contents.setLayout(new BorderLayout());
setContentPane(contents);
//North:
JLabel lblTitle = new JLabel("Reverse File via Stack", SwingConstants.CENTER);
lblTitle.setFont(new Font(Font.DIALOG, Font.BOLD, 18));
contents.add(lblTitle, BorderLayout.NORTH);
//Center:
panelCenter = new JPanel();
panelCenter.setBorder(borderCenter);
// Here are a few tricky parts:
//List Original order:
lblOriginal = new JLabel ("Original order:");
lblOriginal.setAlignmentX(LEFT_ALIGNMENT);
listOriginal = new JList<>(listModelOriginal);
listModelOriginal = new DefaultListModel();
listOriginal.setAlignmentX(LEFT_ALIGNMENT);
listOriginal.setBorder(borderList);
JScrollPane scrollListOriginal = new JScrollPane(listOriginal);
scrollListOriginal.setAlignmentX(LEFT_ALIGNMENT);
scrollListOriginal.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
setSpecificSize(scrollListOriginal, new Dimension (200,300));
boxOriginal.add(lblOriginal);
boxOriginal.add(scrollListOriginal);
panelCenter.add(boxOriginal);
//Spacer:
panelCenter.add(Box.createRigidArea(new Dimension(10,1)));
//List Reverse order:
lblReverse = new JLabel ("Reversed order:");
lblReverse.setAlignmentX(LEFT_ALIGNMENT);
listReverse = new JList<>(listModelReverse);
listModelReverse = new DefaultListModel();
listReverse.setAlignmentX(LEFT_ALIGNMENT);
listReverse.setBorder(borderList);
JScrollPane scrollListReverse = new JScrollPane(listReverse);
scrollListReverse.setAlignmentX(LEFT_ALIGNMENT);
scrollListReverse.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
setSpecificSize(scrollListReverse, new Dimension (200,300));
boxReverse.add(lblReverse);
boxReverse.add(scrollListReverse);
panelCenter.add(boxReverse);
contents.add(panelCenter, BorderLayout.CENTER);
//South:
panelSouth = new JPanel();
//Buttons:
btnRead = new JButton ("Read");
btnReverse = new JButton ("Reverse");
btnWrite = new JButton ("Write");
boxButtons.add(btnRead);
boxButtons.add(Box.createRigidArea(new Dimension(5,1)));
boxButtons.add(btnReverse);
boxButtons.add(Box.createRigidArea(new Dimension(5,1)));
boxButtons.add(btnWrite);
panelSouth.add(boxButtons);
contents.add(panelSouth, BorderLayout.SOUTH);
}
}
public static void main(String[] args)
{
ReverseFileViaStack gui = new ReverseFileViaStack();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.*;
public class ReverseFileViaStack extends JFrame
implements ActionListener
{
//Borders:
private Border borderCenter = BorderFactory.createEmptyBorder(10,10,10,10);
private Border borderContents = BorderFactory.createEmptyBorder(0, 0, 10, 0);
private Border borderList = BorderFactory.createLineBorder(Color.BLUE, 1);
//Containers:
private Box boxButtons = Box.createHorizontalBox();
private Box boxOriginal = Box.createVerticalBox();
private Box boxReverse = Box.createVerticalBox();
private JPanel contents;
private JPanel panelCenter;
private JPanel panelSouth;
//Components:
private JButton btnRead;
private JButton btnReverse;
private JButton btnWrite;
private JLabel lblTitle;
private JLabel lblOriginal;
private JLabel lblReverse;
// Lists:
private JList<String> listOriginal;
private JList<String> listReverse;
// List models:
private DefaultListModel<String> listModelOriginal = new DefaultListModel<>();
private DefaultListModel<String> listModelReverse = new DefaultListModel<>();
// Fonts:
private final Font fontBold = new Font(Font.DIALOG, Font.BOLD, 14);
private final Font fontPlain = new Font(Font.DIALOG, Font.PLAIN, 14);
// Stack (from the Java Collections Framework):
private Stack<String> stack = new Stack<>();
// Constructor.
public ReverseFileViaStack()
{
// It should setup the entire UI.
super ("Reverse File via Stack");
setFonts();
//Main Container:
contents = new JPanel();
contents.setBorder(borderContents);
contents.setLayout(new BorderLayout());
setContentPane(contents);
//North:
JLabel lblTitle = new JLabel("Reverse File via Stack", SwingConstants.CENTER);
lblTitle.setFont(new Font(Font.DIALOG, Font.BOLD, 18));
contents.add(lblTitle, BorderLayout.NORTH);
//Center:
panelCenter = new JPanel();
panelCenter.setBorder(borderCenter);
// Here are a few tricky parts:
//List Original order:
lblOriginal = new JLabel ("Original order:");
lblOriginal.setAlignmentX(LEFT_ALIGNMENT);
listOriginal = new JList<>(listModelOriginal);
listModelOriginal = new DefaultListModel();
listOriginal.setAlignmentX(LEFT_ALIGNMENT);
listOriginal.setBorder(borderList);
JScrollPane scrollListOriginal = new JScrollPane(listOriginal);
scrollListOriginal.setAlignmentX(LEFT_ALIGNMENT);
scrollListOriginal.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
setSpecificSize(scrollListOriginal, new Dimension (200,300));
boxOriginal.add(lblOriginal);
boxOriginal.add(scrollListOriginal);
panelCenter.add(boxOriginal);
//Spacer:
panelCenter.add(Box.createRigidArea(new Dimension(10,1)));
//List Reverse order:
lblReverse = new JLabel ("Reversed order:");
lblReverse.setAlignmentX(LEFT_ALIGNMENT);
listReverse = new JList<>(listModelReverse);
listModelReverse = new DefaultListModel();
listReverse.setAlignmentX(LEFT_ALIGNMENT);
listReverse.setBorder(borderList);
JScrollPane scrollListReverse = new JScrollPane(listReverse);
scrollListReverse.setAlignmentX(LEFT_ALIGNMENT);
scrollListReverse.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
setSpecificSize(scrollListReverse, new Dimension (200,300));
boxReverse.add(lblReverse);
boxReverse.add(scrollListReverse);
panelCenter.add(boxReverse);
contents.add(panelCenter, BorderLayout.CENTER);
//South:
panelSouth = new JPanel();
//Buttons:
btnRead = new JButton ("Read");
btnReverse = new JButton ("Reverse");
btnWrite = new JButton ("Write");
boxButtons.add(btnRead);
boxButtons.add(Box.createRigidArea(new Dimension(5,1)));
boxButtons.add(btnReverse);
boxButtons.add(Box.createRigidArea(new Dimension(5,1)));
boxButtons.add(btnWrite);
panelSouth.add(boxButtons);
contents.add(panelSouth, BorderLayout.SOUTH);
}
}
public static void main(String[] args)
{
ReverseFileViaStack gui = new ReverseFileViaStack();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.