/**
* Løsning på oppgave 3, kapittel 14.
* Lagres på en fil med navn "Filvindu.java", og kompileres
* med kommandoen
*
* javac Filvindu.java
*
* og kjøres med kommandoen
*
* java Filvindu
*
*
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import easyIO.In;
class Filvindu extends JFrame implements ActionListener {
JTextArea tekstvindu;
JTextField filnavnfelt;
JButton filknapp;
JLabel filnavnlabel;
// Konstruktør
Filvindu() {
super("Filleser");
initDesktop();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
void visFil(String filnavn) {
if (filnavn == null || "".equals(filnavn.trim())
|| !In.isFile(filnavn.trim())) {
JOptionPane.showMessageDialog(this,
"Finner ikke oppgitt fil: " + filnavn);
} else {
tekstvindu.setText(""); // Tømmer filvinduet.
In fil = new In(filnavn.trim());
while (!fil.endOfFile()) {
tekstvindu.append(fil.inLine() + "\n");
}
}
}
void initDesktop() {
filknapp = new JButton("Les fil");
filknapp.addActionListener(this);
tekstvindu = new JTextArea(30, 80);
filnavnfelt = new JTextField(40);
filnavnlabel = new JLabel("Filnavn: ");
filnavnlabel.setLabelFor(filknapp);
// Label, felt og knapp øverst i vinduet, bruker
// GridLayout med en rad og vilkårlig antall kolonner.
JPanel nord = new JPanel();
FlowLayout layout = new FlowLayout();
nord.setLayout(layout);
nord.add(filnavnlabel);
nord.add(filnavnfelt);
nord.add(filknapp);
add(nord, BorderLayout.NORTH);
// Textvindu med scrollpane i center.
JScrollPane scroll = new JScrollPane(tekstvindu);
add(scroll, BorderLayout.CENTER);
pack();
}
public void actionPerformed(ActionEvent e) {
visFil(filnavnfelt.getText());
}
public static void main(final String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Filvindu();
}
});
}
}
|