Question

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?

Was it helpful?

Solution

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);

OTHER TIPS

the textarea needs to be inside the scroll pane

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top