My program is finished, but testing it out, I found out that the scrollpanel does not appear, it just resizes the JTextArea instead. The code is provided below:
package javaapplication15;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.io.IOException;
import javax.swing.*;
public class Tekstprogram extends JFrame {
public Tekstprogram() {
setSize(400, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
Container Indhold = getContentPane();
Indhold.setLayout(new FlowLayout());
JButton openButton = new JButton("Open");
JButton saveButton = new JButton("Save");
final JLabel statusbar =
new JLabel("Output of your selection will go here");
final JTextArea TekstOmråde = new JTextArea(29, 30);
JScrollPane scrollText = new JScrollPane(TekstOmråde);
openButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
int option = chooser.showOpenDialog(Tekstprogram.this);
if (option == JFileChooser.APPROVE_OPTION) {
File[] sf = chooser.getSelectedFiles();
String filelist = "nothing";
if (sf.length > 0) {
filelist = sf[0].getName();
}
for (int i = 1; i < sf.length; i++) {
filelist = filelist + ", " + sf[i].getName();
开发者_开发技巧}
try {
String strLine;
File selectedFile = chooser.getSelectedFile();
FileInputStream in = new FileInputStream(selectedFile);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
while ((strLine = br.readLine()) != null) {
TekstOmråde.append(strLine + "\n");
}
} catch (Exception e) {
System.out.println("En fejl opstod ved" + e);
}
}
}
});
saveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JFileChooser chooser = new JFileChooser();
int option = chooser.showSaveDialog(Tekstprogram.this);
if (option == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
try {
BufferedWriter out = new BufferedWriter(new FileWriter(file));
out.write(TekstOmråde.getText());
out.close();
} catch (IOException e) {
System.out.println("IOException fejl opstod :");
e.printStackTrace();
}
}
}
});
Indhold.add(openButton);
Indhold.add(saveButton);
Indhold.add(TekstOmråde);
Indhold.add(scrollText);
Indhold.add(statusbar);
}
public static void main(String args[]) {
Tekstprogram sfc = new Tekstprogram();
sfc.setVisible(true);
}
}
Is there anyway to make the JTextArea static?
Remove
Indhold.add(TekstOmråde);
Since you have
JScrollPane scrollText = new JScrollPane(TekstOmråde);
you are already adding the TexstOmråde
indirectly by doing
Indhold.add(scrollText);
the textarea needs to be inside the scroll pane
精彩评论