Re: Adding SCROLLBARS to a JTextArea



bH wrote:
Hi All,

This program uses the JFileChooser. It works as intended but once the
text is downloaded I cannot get my cursor to move farther down the
text. For that reason, I want to add scroll bars to the text area. I
tried adding this line below in various locations referencing the
fTextArea but that does not work. Obviously I need something more.

"fTextArea.SCROLLBARS_BOTH;"

What am I missing?

Any help is appreciated.

bH

//obtained from:
//http://www.particle.kth.se/~lindsey/JavaCourse/Book/Code/P1/Java/
Chapter09/Choosers/File/FileChooseApp.java

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

/**
* Demonstrate the use of a JFileChooser to open and
* save files. The chooser filers for *.java files. Opening
* the file results in the text fillig a JTextArea component.
* The text can be modified and saved to a new file.<br><br>
**/
public class FileChooseApp extends JFrame
implements ActionListener
{

JMenuItem fMenuOpen = null;
JMenuItem fMenuSave = null;
JMenuItem fMenuClose = null;

JTextArea fTextArea;

JavaFilter fJavaFilter = new JavaFilter ();
File fFile = new File ("default.java");

/** Create a frame with JTextArea and a menubar
* with a "File" dropdown menu.
**/
FileChooseApp (String title) {
super (title);

Container content_pane = getContentPane ();

// Create a user interface.
content_pane.setLayout ( new BorderLayout () );
fTextArea = new JTextArea ("");

content_pane.add ( fTextArea, "Center");


// Use the helper method makeMenuItem
// for making the menu items and registering
// their listener.
JMenu m = new JMenu ("File");

// Modify task names to something relevant to
// the particular program.
m.add (fMenuOpen = makeMenuItem ("Open"));
m.add (fMenuOpen = makeMenuItem ("Save"));
m.add (fMenuClose = makeMenuItem ("Quit"));

JMenuBar mb = new JMenuBar ();
mb.add (m);

setJMenuBar (mb);
setSize (400,400);
} // ctor

/** Process events from the chooser. **/
public void actionPerformed ( ActionEvent e ) {
boolean status = false;

String command = e.getActionCommand ();
if (command.equals ("Open")) {
// Open a file
status = openFile ();
if (!status)
JOptionPane.showMessageDialog (
null,
"Error opening file!", "File Open Error",
JOptionPane.ERROR_MESSAGE
);

} else if (command.equals ("Save")) {
// Save a file
status = saveFile ();
if (!status)
JOptionPane.showMessageDialog (
null,
"IO error in saving file!!", "File Save Error",
JOptionPane.ERROR_MESSAGE
);

} else if (command.equals ("Quit") ) {
dispose ();
}
} // actionPerformed

/** This "helper method" makes a menu item and then
* registers this object as a listener to it.
**/
private JMenuItem makeMenuItem (String name) {
JMenuItem m = new JMenuItem (name);
m.addActionListener (this);
return m;
} // makeMenuItem

/**
* Use a JFileChooser in Open mode to select files
* to open. Use a filter for FileFilter subclass to select
* for *.java files. If a file is selected then read the
* file and place the string into the textarea.
**/
boolean openFile () {

JFileChooser fc = new JFileChooser ();
fc.setDialogTitle ("Open File");

// Choose only files, not directories
fc.setFileSelectionMode ( JFileChooser.FILES_ONLY);

// Start in current directory
fc.setCurrentDirectory (new File ("."));

// Set filter for Java source files.
fc.setFileFilter (fJavaFilter);

// Now open chooser
int result = fc.showOpenDialog (this);

if (result == JFileChooser.CANCEL_OPTION) {
return true;
} else if (result == JFileChooser.APPROVE_OPTION) {

fFile = fc.getSelectedFile ();
// Invoke the readFile method in this class
String file_string = readFile (fFile);

if (file_string != null)
fTextArea.setText (file_string);
else
return false;
} else {
return false;
}
return true;
} // openFile


/**
* Use a JFileChooser in Save mode to select files
* to open. Use a filter for FileFilter subclass to select
* for "*.java" files. If a file is selected, then write the
* the string from the textarea into it.
**/
boolean saveFile () {
File file = null;
JFileChooser fc = new JFileChooser ();

// Start in current directory
fc.setCurrentDirectory (new File ("."));

// Set filter for Java source files.
fc.setFileFilter (fJavaFilter);

// Set to a default name for save.
fc.setSelectedFile (fFile);

// Open chooser dialog
int result = fc.showSaveDialog (this);

if (result == JFileChooser.CANCEL_OPTION) {
return true;
} else if (result == JFileChooser.APPROVE_OPTION) {
fFile = fc.getSelectedFile ();
if (fFile.exists ()) {
int response = JOptionPane.showConfirmDialog (null,
"Overwrite existing file?","Confirm Overwrite",
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE);
if (response == JOptionPane.CANCEL_OPTION) return false;
}
return writeFile (fFile, fTextArea.getText ());
} else {
return false;
}
} // saveFile

/** Use a BufferedReader wrapped around a FileReader to read
* the text data from the given file.
**/
public String readFile (File file) {

StringBuffer fileBuffer;
String fileString=null;
String line;

try {
FileReader in = new FileReader (file);
BufferedReader dis = new BufferedReader (in);
fileBuffer = new StringBuffer () ;

while ((line = dis.readLine ()) != null) {
fileBuffer.append (line + "\n");
}

in.close ();
fileString = fileBuffer.toString ();
}
catch (IOException e ) {
return null;
}
return fileString;
} // readFile


/**
* Use a PrintWriter wrapped around a BufferedWriter, which in turn
* is wrapped around a FileWriter, to write the string data to the
* given file.
**/
public static boolean writeFile (File file, String dataString) {
try {
PrintWriter out =
new PrintWriter (new BufferedWriter (new FileWriter (file)));
out.print (dataString);
out.flush ();
out.close ();
}
catch (IOException e) {
return false;
}
return true;
} // writeFile

/** Create the framed application and show it. **/
public static void main (String [] args) {
// Can pass frame title in command line arguments
String title="Frame Test";
if (args.length != 0) title = args[0];
FileChooseApp f = new FileChooseApp (title);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setVisible (true);
} // main

}// class FileChooseApp




// JavaFilter class

import javax.swing.*;
import java.io.*;

/** Filter to work with JFileChooser to select java file types. **/
public class JavaFilter extends javax.swing.filechooser.FileFilter
{
public boolean accept (File f) {
return f.getName ().toLowerCase ().endsWith (".java")
|| f.isDirectory ();
}

public String getDescription () {
return "Java files (*.java)";
}
} // class JavaFilter


Look at JScrollPane.

--

Knute Johnson
email s/nospam/knute/
.



Relevant Pages

  • Adding SCROLLBARS to a JTextArea
    ... This program uses the JFileChooser. ... JMenuItem fMenuOpen = null; ... FileChooseApp (String title) { ... /** Use a BufferedReader wrapped around a FileReader to read ...
    (comp.lang.java.help)
  • Re: Can you preselect javax.swing.filechooser.FileFilter.getDescription()?
    ... You have stored the file name extension into a String that you can ... You will now generate a JFileChooser that will allow you to save ... Generate for selecting ... JFileChooser chooser = new JFileChooser; ...
    (comp.lang.java.help)
  • Can you preselect javax.swing.filechooser.FileFilter.getDescription()?
    ... You have stored the file name extension into a String that you can ... You will now generate a JFileChooser that will allow you to save ... Generate for selecting ... JFileChooser chooser = new JFileChooser; ...
    (comp.lang.java.help)
  • Re: Java meets UNIX
    ... >> java.io.File#mkdirsist dein Freund, ebenso BufferedReader, ... * Executes the given String as Command on the command line using ... String lastLine = null; ...
    (de.comp.lang.java)
  • Newbie server response question
    ... I am trying to build a very simple server. ... I am having trouble with the listening part. ... the following code listening for the command (the string variable ... BufferedReader in = new BufferedReader( ...
    (comp.lang.java.programmer)