views:

45

answers:

2

Hello everyone

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 JTexarea static?

+1  A: 

the textarea needs to be inside the scroll pane

Randy
+1  A: 

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);
aioobe
+1, A Swing component can only have a single parent. First you add it to the scroll pane, but then you remove it from the scroll pane when you add it directly to the panel.
camickr