Hello all. My program loads a text file and displays it in a JTextArea. It is supposed to display the file similar to PowerPoint (i.e. slides). It searches the file, and when it finds a blank line (i.e only a '\n') it is supposed concatenate all of the previous lines since the last blank line and addElement the String into the Vector. Then the scroll bar should display each Vector item depending on the value position of the scrollbar. The problem I'm having is in my public Vector fileBuffer(String fileName) throws IOException method. It is reading the lines and adding all of the previous Vector items to the current item. Any suggestions on how to fix this would be great. Here is a link to my test .txt file:
http://www.student.gsu.edu/~eeichler1/trivia.txt You'll notice if you load this file that as you scroll down a few that it's displaying the vector element but the element is the entire file up to that element. Confused?? Thanks! Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.io.*;
class SlideViewFrame extends JFrame
{
private JMenuBar menuBar;
private JMenu fileMenu, helpMenu;
private JMenuItem openMenuItem, closeMenuItem, exitMenuItem, aboutMenuItem;
private JSeparator separator;
private JToolBar toolBar;
private JLabel label;
private JTextArea textArea;
private JScrollBar scrollBar;
private JFileChooser fileChooser;
private Font font = new Font("Sans Serif", Font.PLAIN, 36);
private Icon fileIcon = new ImageIcon("open.gif");
private OpenAction openAction = new OpenAction("Open", fileIcon);
private static Dimension screenSize = Toolkit.getDefaultToolkit(
).getScree
nSize();
//Method that gets the current screen size and reduces the vertical
//size by 30 pixels
private static int getScreenHeight()
{
double height;
height = (screenSize.getHeight() - 30);
return (int)height;
}
//Method for frame construction
public SlideViewFrame()
{
//Set title and size
setTitle("SlideView");
setSize((int)screenSize.ge
tWidth(), getScreenHeight());
//Listener for clicking "About"
ActionListener aboutListener = new ActionListener()
{
public void actionPerformed(ActionEven
t evt)
{
JOptionPane.showMessageDia
log(null,
"SlideView\nVersion 1.0\nCopyright 2003 Eric Eichler",
"About SlideView", JOptionPane.INFORMATION_ME
SSAGE);
}
};
//Listener for clicking "Exit"
ActionListener exitListener = new ActionListener()
{
public void actionPerformed(ActionEven
t evt)
{
System.exit(0);
}
};
//Create menu bar and add items
menuBar = new JMenuBar();
setJMenuBar(menuBar);
//Items for the "file" menu
fileMenu = new JMenu("File");
fileMenu.setMnemonic(KeyEv
ent.VK_F);
menuBar.add(fileMenu);
fileMenu.add(openAction);
closeMenuItem = new JMenuItem("Close", KeyEvent.VK_C);
fileMenu.add(closeMenuItem
);
separator = new JSeparator();
fileMenu.add(separator);
exitMenuItem = new JMenuItem("Exit", KeyEvent.VK_X);
exitMenuItem.addActionList
ener(exitL
istener);
fileMenu.add(exitMenuItem)
;
//Items for the "help" menu
helpMenu = new JMenu("Help");
helpMenu.setMnemonic(KeyEv
ent.VK_H);
menuBar.add(helpMenu);
aboutMenuItem = new JMenuItem("About SlideView", KeyEvent.VK_A);
aboutMenuItem.addActionLis
tener(abou
tListener)
;
helpMenu.add(aboutMenuItem
);
//Create toolbar
toolBar = new JToolBar();
toolBar.setFloatable(false
);
toolBar.add(openAction);
//Create text area and scrollbar
textArea = new JTextArea();
textArea.setEditable(false
);
textArea.setFont(font);
//Create scrollbar
scrollBar = new JScrollBar();
scrollBar.setVisible(true)
;
scrollBar.setEnabled(false
);
//Create label
label = new JLabel("");
label.setVisible(false);
//Add components to the container
Container container = getContentPane();
container.setLayout(new BorderLayout());
container.add(toolBar, BorderLayout.NORTH);
container.add(label, BorderLayout.SOUTH);
container.add(textArea, BorderLayout.CENTER);
container.add(scrollBar, BorderLayout.EAST);
}
//Class that creates the AbstractAction objects for the "Open" functions
//on the menubar and toolbar.
class OpenAction extends AbstractAction
{
public OpenAction(String text, Icon icon)
{
super(text, icon);
putValue(Action.SHORT_DESC
RIPTION, "Open");
putValue(Action.MNEMONIC_K
EY, new Integer(java.awt.event.Key
Event.VK_O
));
putValue(Action.ACCELERATO
R_KEY, KeyStroke.getKeyStroke("co
ntrol O"));
}
//Method that displays the JFileChooser and returns the name of the selected file
public String fileChooser() throws IOException
{
String fileName, currentPath = new String();
File currentDirectory = new File(".");
currentPath = currentDirectory.getAbsolu
tePath();
fileChooser = new JFileChooser(currentPath);
fileChooser.showOpenDialog
(null);
File selectedFile = fileChooser.getSelectedFil
e();
fileName = selectedFile.getName();
return fileName;
}
//Method that reads the contents of the selected file and stores it into a Vector Object
public Vector fileBuffer(String fileName) throws IOException
{
FileReader fileIn = new FileReader(fileName);
BufferedReader in = new BufferedReader(fileIn);
Vector stringVector = new Vector();
String tempString = new String();
tempString.equals(null);
while(true)
{
String currentLine = in.readLine();
if(currentLine == null)
{
if(tempString.length() > 0)
{
stringVector.addElement(te
mpString);
}
break;
}
else if(currentLine.length() > 0)
{
tempString = tempString + " " + currentLine + '\n';
}
else
{
stringVector.addElement(te
mpString);
tempString.equals(null);
}
}
return stringVector;
}
public void scrollBarAction(final Vector vector)
{
AdjustmentListener adjustmentListener = new AdjustmentListener()
{
public void adjustmentValueChanged(Adj
ustmentEve
nt adj_evt)
{
System.out.println((String
)vector.el
ementAt(sc
rollBar.ge
tValue()))
;
textArea.setText((String)v
ector.elem
entAt(scro
llBar.getV
alue()));
}
};
int size = vector.size();
scrollBar.setValues(0, 1, 0, size + 1);
scrollBar.setEnabled(true)
;
scrollBar.addAdjustmentLis
tener(adju
stmentList
ener);
label.setText("Slide " + (scrollBar.getValue()+1) + " of " + (scrollBar.getMaximum()-1)
);
label.setHorizontalAlignme
nt(JLabel.
CENTER);
label.setVisible(true);
}
public void actionPerformed(ActionEven
t evt)
{
try
{
String name = new String(fileChooser());
Vector stringVector = new Vector(fileBuffer(name));
scrollBarAction(stringVect
or);
textArea.setText((String)s
tringVecto
r.elementA
t(0));
}
catch(IOException e)
{
System.out.println("Error:
" + e.getMessage());
System.exit(-1);
}
}
}
}
//Main driver class
public class SlideView
{
public static void main(String args[])
{
JFrame frame = new SlideViewFrame();
frame.setDefaultCloseOpera
tion(JFram
e.EXIT_ON_
CLOSE);
frame.setVisible(true);
//frame.setExtendedState(J
Frame.MAXI
MIZED_BOTH
);
}
}