23.07.2013 Views

Java IO.pdf - Nguyen Dang Binh

Java IO.pdf - Nguyen Dang Binh

Java IO.pdf - Nguyen Dang Binh

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

13.3 File Viewer, Part 6<br />

<strong>Java</strong> I/O<br />

We've now got the tools needed to put a graphical user interface onto the FileViewer<br />

application we've been developing. The back end doesn't need to change at all. It's still based<br />

on the same filter streams we've used for the last several chapters. However, instead of<br />

reading filenames from the command line, we can get them from a file chooser. Instead of<br />

dumping the files on System.out, we can display them in a text area. And instead of relying<br />

on the user remembering a lot of confusing command-line switches, we can provide simple<br />

radio buttons for the user to choose from. This has the added advantage of making it easy to<br />

repeatedly interpret the same file according to different filters.<br />

Figure 13.6 shows the finished application. This will give you some idea of what the code is<br />

aiming at. Initially, I started with a pencil-and-paper sketch, but I'll spare you my inartistic<br />

renderings. The single JFrame window is organized with a border layout. The west panel<br />

contains various controls for determining how the data is interpreted. The east panel contains<br />

the JFileChooser used to select the file. Notice that the Approve button has been customized<br />

to say "View File" rather than "Open". Ideally, I'd like to make the Cancel button say "Quit"<br />

instead, but the JFileChooser class doesn't allow you to do that without using resource<br />

bundles, a subject I would prefer to leave for another book. The south panel contains a scroll<br />

pane. Inside the scroll pane is a streamed text area.<br />

Figure 13.6. The FileViewer<br />

One fact I discovered while developing this application was that Swing components don't get<br />

along well with standard AWT components like Frame and TextArea. My initial attempts that<br />

331

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!