2016-12-01 6 views
0

Je travaille sur un simple lecteur de fichiers. Il lit le fichier .txt puis formate la sortie et affiche la sortie dans un JTextArea. Pour une raison quelconque, la sortie ne s'affiche pas correctement. J'ai donné mon code actuel, suivi du contenu du fichier texte ci-dessous.Comment réparer cette erreur de formatage JTextArea?

code

public static JTextArea display = new JTextArea(); 

public static void main(String[] args) { 

     // GUI 

     JFrame frame = new JFrame("Haberdasher"); 
     frame.setSize(450, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLocationRelativeTo(null); 

     JPanel container = new JPanel(); 
     container.setLayout(null); 
     frame.setContentPane(container); 

     JScrollPane scroll = new JScrollPane(display); 
     scroll.setBounds(10, 10, 415, 150); 

     container.add(scroll); 

     frame.toFront(); 
     frame.setVisible(true); 


     // Logic 


     String path = "src//employees.txt"; 

     boolean endOfFile = false; 

     String output = "Name" + "\t\t" + "Weekly Sales" + "\t\t" + "Weekly Pay" + "\n"; 

     try { 
      FileReader fr = new FileReader(path); 
      BufferedReader br = new BufferedReader(fr); 

      while (!endOfFile) { 

       String name = br.readLine(); 

       if(name == null) { 
        endOfFile = true; 
       } else { 
        int sale = Integer.parseInt(br.readLine()); 

        if(name.length() >= 16) { 
         output += name + "\t" + sale + "\t\t" + "300" + "\n"; 
        } else { 
         output += name + "\t\t" + sale + "\t\t" + "300" + "\n"; 
        } 
       } 
      } 
      br.close(); 
      System.out.println(output); 
      display.setText(output); 
     } catch (IOException e) { 
      System.out.println(e); 
     } 
    } 

Employees.txt Contenu:http://hastebin.com/ijuyedizil.nginx

Courant de sortie:enter image description here

Résultats escomptés:http://hastebin.com/epesipatot.nginx

+0

soit ne pas imprimer le nom complet ou utilisez un autre onglet –

+0

Vous devez définir le nombre d'onglets (\ t) que vous imprimez en fonction de la longueur des chaînes que vous imprimez. –

+0

Quelle est votre sortie attendue? Est-ce que ce problème d'alignement est le problème? – Coder

Répondre

1

Maintenant, la sortie est bonne dans la console, mais pas dans JTextArea.

Si vous voulez que le texte à aligner comme il le fait sur la nécessité de la console pour utiliser une police monospaced

textArea.setFone(new Font("monospaced", Font.PLAIN, 10)); 

Vous pouvez aussi avoir besoin d'utiliser:

textArea.setTabSize(...);