2010-05-09 6 views
0

Mon programme est terminé, mais en le testant, j'ai découvert que le scrollpanel n'apparaît pas, il redimensionne simplement le JTextArea à la place. Le code est fourni ci-dessous:ScrollPanel dans Java n'apparaît pas JTextArea redimensionne à la place

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

Y at-il une manière de rendre le JTextArea statique?

Répondre

2

Retirer Indhold.add(TekstOmråde);

Puisque vous avez

JScrollPane scrollText = new JScrollPane(TekstOmråde); 

vous déjà ajoutez le TexstOmråde indirectement en faisant

Indhold.add(scrollText); 
+0

+ 1, un composant Swing peut seulement avoir un seul parent. Vous l'ajoutez d'abord au volet de défilement, puis vous le supprimez du volet de défilement lorsque vous l'ajoutez directement au panneau. – camickr

1

le textarea doit être à l'intérieur du panneau de défilement

Questions connexes