2016-03-22 9 views
1

情報をJSON(astext)として表示するプログラムがあります。 NetBeansでの出力は以下のように正常に見えるコンソルこの1:JTextAreaInterfaceにJSON(asText)出力を表示しようとしています

------------------------ 
| res1     | 
======================== 
| "Houben,-Henriette" | 
| "Maiterth,-Ralf"  | 
| "Müller,-Heiko"  | 
| "Herr,-Hansjörg"  | 
| "Schneider,-Georg" | 
------------------------ 

しかしJTextAreaInterfaceでの結果は次のようになります。

---------------- 
| res1   | 
================== 
| "Houben,-Henriette" | 
| "Maiterth,-Ralf" | 
| "Müller,-Heiko"  | 
| "Herr,-Hansjörg" | 
| "Schneider,-Georg | 

------------------------ 

をそして私は2つのまたは3つの列が発生していたときに、問題が悪化しています。 修正する方法はありますか? これは私のJTextAreaInterfaceです:

public class JTextAreaInterface extends OutputStream { 
    public static JTextArea textArea = new JTextArea(25, 80); 
    private final JTextArea destination; 

    public JTextAreaInterface(JTextArea destination) { 
     if (destination == null) 
      throw new IllegalArgumentException("Destination is null"); 
     this.destination = destination; 
    } 

    @Override 
    public void write(byte[] buffer, int offset, int length) throws IOException { 
     final String text = new String(buffer, offset, length); 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       destination.append(text); 
      } 
     }); 
    } 

    @Override 
    public void write(int b) throws IOException { 
     write(new byte[] { (byte) b }, 0, 1); 
    } 

    public static void main(String[] args) throws Exception { 
     textArea.setEditable(false); 
     JFrame frame = new JFrame("Processing"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     Container contentPane = frame.getContentPane(); 
     contentPane.setLayout(new BorderLayout()); 
     contentPane.add(new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
       JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), BorderLayout.CENTER); 
     frame.pack(); 
     frame.setVisible(true); 
     JTextAreaInterface out = new JTextAreaInterface(textArea); 
     System.setOut(new PrintStream(out)); 
     MyProgram test = new MyProgram(); 
     test.Processing(); 

      System.setOut(new PrintStream(out, true)); 
      System.setErr(new PrintStream(out, true)); 
    } 
} 

答えて

2

あなたがテキストエリアのために、Courierなどの等幅フォントを設定するためにJTextArea.setFont()を使用する必要があります。

関連する問題