2016-12-01 6 views
0

Ich arbeite an einem einfachen Datei-Reader. Er liest die TXT-Datei, formatiert die Ausgabe und zeigt die Ausgabe in einer JTextArea an. Aus irgendeinem Grund wird die Ausgabe nicht korrekt angezeigt. Ich habe meinen aktuellen Code gefolgt von den folgenden Textdateien angegeben.Wie würde ich diesen JTextArea-Formatierungsfehler beheben?

-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 Inhalt:http://hastebin.com/ijuyedizil.nginx

Stromausgang:enter image description here

Erwartete Ausgabe:http://hastebin.com/epesipatot.nginx

+0

entweder nicht gedruckt den ganzen Namen oder verwenden Sie eine andere Registerkarte –

+0

Sie müssen die Anzahl der Registerkarten (\ t), die Sie drucken, abhängig von der Länge der Zeichenfolgen, die Sie drucken, vornehmen. –

+0

Was ist Ihre erwartete Leistung? Ist das Problem der Ausrichtung das Problem? – Coder

Antwort

1

Nun ist die Ausgabe in der Konsole in Ordnung, aber nicht in der JTextArea.

Wenn Sie wollen, dass der Text auszurichten, wie es auf der Konsole notwendig macht einen nichtproportionalen Schrift

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

Sie auch verwenden müssen, können verwendet werden:

textArea.setTabSize(...); 
Verwandte Themen