|
|
|
1000 Java Tips ebook
|
|
 

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java
programming articles and tips. Please take your copy here.
Take your copy of free "Java Technology Screensaver"!. |
|
Easy Learn Java: Programming Articles, Examples and Tips - Page 341
Previous
1060 Stories (530 Pages, 2 Per Page)
Next
Java: JComboBox (uneditable)
|
Making Choices
There are several ways to select one of many fixed choices: radio buttons, a
menu, a list, or a (uneditable) combo box. A combo box (JComboBox) is a popup
menu and is often the best component to use because it uses less space than
radio buttons or a list, and it shows as part of a "form" so the user realizes
it's there, unlike a menu.
You can also use an editable combo box, and in this case the user can either
choose from the pop-up menu or type in a value.
Constructor
An easy way to build a combo box is to initialize an array (or Vector, but not
yet the new Collections types) of strings and pass it to the constructor.
Objects other than strings can be used, but this is the most common. The list
also be built by successive calls to the add method.
String[] dias = {"lunes", "martes", "miercoles"};
JComboBox dayChoice = new JComboBox(dias)
Common methods
In these prototypes, assume the following.
int index;
String item;
String obj; // obj can be any object type, but is commonly String
JComboBox cb = new JComboBox(. . .);
| Result |
Call |
Description |
| |
cb.addActionListener(...); |
Add listener -- same as for button. |
| Modifying a JComboBox |
| |
cb.setSelectedIndex(index); |
Set default, visible, choice. |
| |
cb.setSelectedItem(obj); |
Set default, visible, choice. |
| |
cb.add(item); |
Add additional item to the list |
| |
cb.insert(item, index); |
Add additional item after index. |
| |
cb.remove(item); |
Remove item from the list |
| |
cb.remove(index); |
Remove item as position index |
| Testing a JComboBox |
index = |
cb.getSelectedIndex(); |
Return index of selected item. |
obj = |
cb.getSelectedItem(); |
Return selected item. |
Events
A JComboBox generates both ActionEvents (like buttons, text fields, etc), or
ItemEvents. Because it is easier to work with ActionEvents, we'll ignore the
ItemEvents. When the user chooses an item from a combo box, an ActionEvent
is generated, and the listener's actionPerformed method is called.
Use either getSelectedIndex to get the integer index of the item
that was selected, or getSelectedItem to get the value (eg, a
String) that was selected.
Example
This example creates a JComboBox, and adds a listener to it. The
getSelectedItem method returns an Object type, so it's necessary
to downcast it back to a String.
String[] fnt = {"Serif", "SansSerif", "Monospaced"};
JComboBox fontChoice = new JComboBox(fnt);
fontChoice.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
JComboBox combo = (JComboBox)e.getSource();
currentFont = (String)combo.getSelectedItem();
}
}
);
1 comment | | Score: 5
|
Posted by jalex on Friday, April 15, 2005 (00:00:00) (9809 reads)
|
Java Lesson 44: An introduction to I/O and the File and FileDialog classes
|
An introduction to I/O and the File and FileDialog classes
Overview
Nearly all programs require the
ability to transfer data in and out of memory. For example, data may be stored
on disk or sent over a network.
Java provides many classes that
make "I/O" (input and output) relatively easy and platform independent. In this
lesson, you will learn how to act upon the file structure of a platform from
inside a Java application. Note that Java applets are NOT permitted to access a
platform's file structure for security reasons.
The File class
While all platforms use pathname strings to
name files and directories, they do not agree on the format of these strings.
For example, the Windows pathname string is not the same as the
Unix pathname string.
Regardless of platform, however, all pathnames
have two components:
-
An optional system-dependent prefix string
(such as the disk-drive specifier followed by "/" for the Unix root directory or "" for the Windows root directory)
-
A sequence of zero or more string names where
each name, except for the last, denotes a directory. The the last name may
denote either a directory or a file. A system-dependent separator ("/" for Unix or "" for Windows) is used between each
name.
For example, the following represents a valid
Windows pathname:
C:My DocumentsNew
CoursesLesson55.htm
Regardless of the platform, the
File class presents a
system-independent view of pathnames.
|
Field |
Usage |
|
separator |
The String representation of the filename separator used on
the current platform. |
|
separatorChar |
The char representation of the filename separator used on
the current platform. |
For example, the following
program can determine if it is running under Windows:
import java.io.*; public class App {
public static void main(String[] args) { if
(File.separator.equals(""))
System.out.println("Windows");
else System.out.println("Not
Windows"); } }
Note that the double backslash
is required to because a single backslash denotes an escape
sequence.
- Has several constructors. The most frequently used constructs a File object from a pathname
string as shown by the following statement:
File f = new File("C:My
DocumentsMiscResume.doc"); NOTE: Constructing a
File object does NOT create a disk file. It only constructs a
platform-independent object for referencing the file.
- Has a number of methods, some of which WILL create, rename, and delete a
disk file or a directory. They should obviously be used with caution. The most
frequently used methods are:
|
Method |
Usage |
|
createNewFile() |
Atomically creates a new, empty file named
by this pathname if and only if a file with this name does not yet
exist |
|
delete() |
Deletes the file or directory denoted by
this pathname |
|
exists() |
Tests whether the file denoted by this
pathname exists |
|
getName() |
Returns the name of the file or directory
denoted by this pathname |
|
getParent() |
Returns the pathname of this pathname's
parent, or null
if this pathname does not name a parent directory |
|
getPath() |
Returns the pathname string of this
pathname |
|
isDirectory() |
Tests whether this pathname is a
directory |
|
isFile() |
Tests whether this pathname is a
file |
|
lastModified() |
Returns the time that the file denoted by
this pathname was last modified |
|
length() |
Returns the length of the file denoted by
this pathname |
|
list() |
Returns an array of strings naming the
files and directories in the directory denoted by this
pathname |
|
mkdir() |
Creates the directory named by this
pathname |
|
renameTo() |
Renames the file denoted by this
pathname |
Consult the Java API
documentation for more details.
The FileDialog class
|
Object |
|
|
|
|
|
|
|
|
|
|
|
|
|
Component |
|
|
|
|
|
|
|
|
|
|
|
|
Container |
|
|
|
|
|
|
|
|
|
|
|
|
Window |
|
|
|
|
|
|
|
|
|
|
|
|
Dialog |
|
|
|
|
|
|
|
|
|
|
|
|
FileDialog |
-
Can be instantiated to display
a modal dialog window from which the user can select a file. Because it is a
modal dialog, once an application makes a FileDialog object visible, it cannot continue
until the user has chosen a file.
|
Field |
Usage |
|
LOAD |
Indicates that the purpose of the file
dialog window is to locate a file from which to read |
|
SAVE |
Indicates that the purpose of the file
dialog window is to locate a file to which to
write |
- Has several constructors. The most frequently used is demonstrated by
FileDialog fd = new FileDialog(this, "Choose file",
FileDialog.LOAD); fd.setVisible(true);
which constructs and displays a
file dialog window for the current (this) object. The title of the file dialog window will be "Choose file", and the chosen
file will be used for input.
- Has a number of methods. The most frequently used are as follows:
|
Method |
Usage |
|
getDirectory() |
Returns a String representing the directory of the
selected file |
|
getFile() |
Returns a String representing the filename of the
selected file |
|
setDirectory() |
Sets the directory of this file dialog
window to be the specified directory |
|
setFile() |
Sets the selected file for this file
dialog window to be the specified
file |
Consult the Java API
documentation for more details.
Sample program
The following menu-driven, Windows program
uses the File and FileDialog classes to display a
variety of information about a file selected by the user:
import java.awt.*; import java.awt.event.*; import
java.util.*; import java.io.*;
public class App extends Frame
implements ActionListener {
// Object references.
MenuBar mainBar; Menu fileMenu; MenuItem find;
MenuItem exit; TextArea fileInfo;
// Processing starts
here.
public static void main(String[] args)
{ App myWindow = new App("File
Analyzer"); myWindow.setSize(500,
200); myWindow.setVisible(true);
}
// Class constructor.
public App(String title)
{
// Usual boilerplate for startup and
shutdown.
super(title);
addWindowListener( new WindowAdapter()
{ public void
windowClosing(WindowEvent e)
{
dispose();
System.exit(0);
} }
);
// Create the frame's menu
bar.
mainBar = new MenuBar();
setMenuBar(mainBar); fileMenu = new
Menu("File"); find = new
MenuItem("Find");
find.addActionListener(this);
fileMenu.add(find);
fileMenu.addSeparator(); exit = new
MenuItem("Exit");
exit.addActionListener(this);
fileMenu.add(exit);
mainBar.add(fileMenu);
// Create the file
information text area.
fileInfo = new
TextArea("
Use the menu bar to find a
file...", 10, 40,
TextArea.SCROLLBARS_NONE); fileInfo.setFont(new
Font("Monospaced", Font.PLAIN, 12));
fileInfo.setEditable(false); add(fileInfo);
}
// Required method of the ActionListener
interface.
public void actionPerformed(ActionEvent e)
{
// If the user selected "File" | "Find" from the
menu, let them // choose a file to be analyzed. Then,
display its information.
if
(e.getSource().equals(find)) {
// Create
and display a modal file dialog box through which
the // user can choose the file they want to
analyze.
FileDialog fd = new
FileDialog(this, "Choose file",
FileDialog.LOAD);
fd.setVisible(true);
// Construct a File
object for the file the user selected.
File f = new File(fd.getDirectory() + File.separator +
fd.getFile());
// Display information
about the file the user selected.
fileInfo.setText("
FILE
INFORMATION
");
fileInfo.append("
Path: " + f.getPath());
fileInfo.append("
Directory: " +
fd.getDirectory());
fileInfo.append("
File: " + f.getName()); fileInfo.append("
Last modified: " + new
Date(f.lastModified()).toString());
fileInfo.append("
Byte length: " +
f.length());
fileInfo.setCaretPosition(0);
}
// If the user selected "File" | "Exit" from the
menu, terminate // the
application.
if (e.getSource().equals(exit))
{
dispose();
System.exit(0); } } }
Looking ahead
While the File and FileDialog classes allow a program to act upon the file structure
of a platform, they do NOT allow for the actual storage and retrieval of data.
That is covered in the next lesson.
Lab exercise for Ferris
students
E-mail your answers to this
assignment no later than
the due date listed in the class schedule.
Review questions
-
Which one of the following
will create and display a file dialog window to assist the user in selecting a
file to be used for output?
-
FileDialog x = new FileDialog(this, "Output file",
FileDialog.SAVE); x.setVisible(true);
-
FileDialog x = new FileDialog(this, "Output file",
FileDialog.SAVE); FileDialog.show(x);
-
FileDialog x = new FileDialog(this, "Output file",
FileDialog.SAVE); x.show();
-
FileDialog x = new FileDialog(this, "Output file",
FileDialog.OUTPUT); x.setVisible(true);
-
FileDialog x = new FileDialog(this, "Output file",
FileDialog.OUTPUT); x.show();
-
Assuming that all unseen
code is correct and that drive D: is a
valid drive specification on the platform, what will happen when an attempt is
made to compile and execute the following statements in a Java application?
The line numbers are for reference purposes only.
1 2 |
File f =
new
File("D:Temp"); f.mkdir(); |
-
a compile error will occur
at line 1
-
a compile error will occur
at line 2
-
the code will compile but
a runtime exception will occur
-
the code will compile and
execute to create a file named Temp
in the root directory of the disk in drive D:
-
the code will compile and
execute to create a directory named Temp in the root directory of the disk in drive D:
-
Code an expression to
determine the length of a file whose path is: C:DocumentsTemp.doc
-
True or False: An
application thread is allowed to continue processing while the user responds
to a visible FileDialog object.
-
True
-
False
28059 bytes more | 2 comments | | Score: 0
|
Posted by jalex on Thursday, April 14, 2005 (00:00:00) (12628 reads)
|
|
|