2012-11-27 47 views
-1

首先我是新手而不是英文好的
是否可以将system.out.print放入框架中?让我们说,如果我想看到所有我的输出打印在文本字段或类似的东西。我可以把输出打印在文本字段中,但它只是settext一个过程。我希望我的输出在文本字段中的所有日志,而不仅仅是一个输出。
对不起,如果假的问题,谢谢您的回答之前
我有代码,我希望把我所有的输出文本2(文本框)把system.out.print放在框架中java [netbeans]

this is my whole code: 



import java.io.IOException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.JTextPane; 
import javax.swing.text.BadLocationException; 
import javax.swing.text.Document; 
import org.jpos.iso.BaseChannel; 
import org.jpos.iso.ISOException; 
import org.jpos.iso.ISOMsg; 
import org.jpos.iso.ISOPackager; 
import org.jpos.iso.ISORequestListener; 
import org.jpos.iso.ISOServer; 
import org.jpos.iso.ISOSource; 
import org.jpos.iso.ServerChannel; 
import org.jpos.iso.channel.ASCIIChannel; 
import org.jpos.iso.packager.GenericPackager; 
import jpos.JPosServer; 

public class server extends javax.swing.JFrame { 


    public server() { 
    initComponents(); 
} 


    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

    mulai = new javax.swing.JButton(); 
    text = new javax.swing.JScrollPane(); 
    text1 = new javax.swing.JTextArea(); 
    jScrollPane1 = new javax.swing.JScrollPane(); 
    JTextPane = new javax.swing.JTextPane(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
    getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); 

    mulai.setText("Star Server"); 
    mulai.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      mulaiActionPerformed(evt); 
     } 
     }); 
     getContentPane().add(mulai, new org.netbeans.lib.awtextra.AbsoluteConstraints(129, 66, -1, -1)); 

     text1.setColumns(20); 
     text1.setRows(5); 
     text.setViewportView(text1); 

     getContentPane().add(text, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 96, 350, 130)); 

     jScrollPane1.setViewportView(JTextPane); 

     getContentPane().add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 250, 330, 170)); 

    pack(); 
}// </editor-fold> 




    private void log(String msg) { 
    JTextPane guiConsole = new JTextPane(); 
    Document doc = guiConsole.getDocument(); 
    try { 
     doc.insertString(doc.getLength(), msg + "\r\n", null); 
    } catch (BadLocationException e) {} 
    } 



    private void setText2Text(String msg) { 
    String toAppend = text1.getText(); 
    toAppend = toAppend + "/n" + msg; 
    text1.setText(toAppend); 
    } 

private void mulaiActionPerformed(java.awt.event.ActionEvent evt) { 
    // TODO add your handling code here: 

} 






    public boolean process1(ISOSource isoSrc, ISOMsg isoMsg) { 
    try { 
     log("Server menerima koneksi dari ["+((BaseChannel)isoSrc).getSocket().getInetAddress().getHostAddress()+"]"); 

     if (isoMsg.getMTI().equalsIgnoreCase("1800")) { 
       acceptNetworkMsg(isoSrc, isoMsg); 
     } 
    } catch (IOException ex) { 
     Logger.getLogger(JPosServer.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (ISOException ex) { 
     Logger.getLogger(JPosServer.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    return false; 
} 

    private void acceptNetworkMsg(ISOSource isoSrc, ISOMsg isoMsg) throws ISOException, IOException { 

     log("Accepting Network Management Request"); 

    ISOMsg reply = (ISOMsg) isoMsg.clone(); 
    reply.setMTI("1810"); 
    reply.set(39, "00"); 
    isoSrc.send(reply); 
} 


/** 
* @param args the command line arguments 
*/ 
public static void main(String args[]) throws ISOException { 

    String hostname = "localhost"; 
    int portNumber = 1234; 

    // membuat sebuah packager 
    ISOPackager packager = new GenericPackager("src/jpos/iso93ascii.xml"); 
    // membuat channel 
    ServerChannel channel = new ASCIIChannel(hostname, portNumber, packager); 
    // membuat server 
    ISOServer server = new ISOServer(portNumber, channel, null); 
    server.addISORequestListener(new JPosServer()); 
    new Thread(server).start(); 

    System.out.println("Server siap menerima koneksi pada port [" + portNumber+"]"); 


    /* Set the Nimbus look and feel */ 
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
    * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
    */ 
    try { 
     for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
      if ("Nimbus".equals(info.getName())) { 
       javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
       break; 
      } 
     } 
    } catch (ClassNotFoundException ex) { 
     java.util.logging.Logger.getLogger(server.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (InstantiationException ex) { 
     java.util.logging.Logger.getLogger(server.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (IllegalAccessException ex) { 
     java.util.logging.Logger.getLogger(server.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
     java.util.logging.Logger.getLogger(server.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } 
    //</editor-fold> 

    /* Create and display the form */ 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new server().setVisible(true); 
     } 
    }); 
} 
// Variables declaration - do not modify 
private javax.swing.JTextPane JTextPane; 
private javax.swing.JScrollPane jScrollPane1; 
private javax.swing.JButton mulai; 
private javax.swing.JScrollPane text; 
private javax.swing.JTextArea text1; 
// End of variables declaration 

}

感谢您对我的问题yogendra越来越,我真的很感激它

+0

如果要重定向用System.out.print()打印的输出日志,应该查看http://docs.oracle.com/javase/6/docs/api/java/lang/ System.html#setOut(java.io.PrintStream) – Pr0gr4mm3r

+0

正如我之前提到的那样,我只是新手而且不擅长英语,我不明白它是什么 –

回答

0

在每个text2.setText()之前,你可以先得到文本,然后在原始字符串中追加新的字符串。

String toAppend = text2.getText(); 
toAppend = toAppend + "/n" + "Your new string message here!"; 
text2.setText(toAppend); 

更新时间:

private void setText2Text(String msg) { 
    String toAppend = text2.getText(); 
    toAppend = toAppend + "/n" + msg; 
    text2.setText(toAppend); 
} 

然后在你的代码,替代

text2.setText("Your message here") 

setText2Text("Your message here") 
+0

它没有工作,它只是输出第一个进程 –

+0

你将代码添加到所有三种方法?或者为了减少重复代码,你可以编写你自己的setTextMsg(String msg)方法 – Don

+0

我向所有三种方法添加代码。那么我减少它,因为你提到之前,它仍然dosn't工作 –

0

不断更新的text与附加文本使用setText方法本身。使用getText可检索现有文本,并将新文本与现有文本以新行分隔。

使用System.lineSeparator()追加新线以下:

String text = text2.getText(); 
    text= text + System.lineSeparator() + "New line text";//<--put the text here 
    text2.setText(text); //<--update the text field value with modified text 

编辑:

要初始化的线程内的服务器。尝试外实例化,并使用相同的设置文本:

final server myServer = new server(); 
/* Create and display the form */ 
java.awt.EventQueue.invokeLater(new Runnable() { 
    public void run() { 
     myServer.setVisible(true); 
    } 
    }); 

    JTextArea text1 = myServer.getText1(). 
    String text = text1.getText(); 
    text= text + System.lineSeparator() + "New line text";//<--put the text here 
    text1.setText(text); //<--update the text field value with modified text 

另外,在你的类定义text1一个getter方法:

public JTextArea getText1(){ 
    return this.text1; 
    } 
+0

谢谢你的回答yogendra但它没有工作 –

+0

@poundPound:糟糕。我有一些错别字。现在更正(更新了答案)。检查并让我知道,如果仍然不起作用。 –

+0

它的工作,但我可以settext静态上下文? cek我的更新 –

0

来模拟你的GUI控制台,您可能需要JTextPane,因为JTextField只能显示一行文字。您需要创建自己的方式“打印”到文本窗格(您不能使用System.out.println打印到GUI)。

代码示例:

假设你有这样的目标:

JTextPane guiConsole = new JTextPane(); 

您可以创建这样一个功能:

private void log(String msg) { 
    Document doc = guiConsole.getDocument(); 
    try { 
     doc.insertString(doc.getLength(), msg + "\r\n", null); 
    } catch (BadLocationException e) {} 
} 

现在,只要你会使用System.out.println("Hello");打印到控制台,只需拨打log("Hello");将相同的文本打印到您的文本窗格。

+0

谢谢你回答大卫,但它不显示在textpane.where我声明文本窗格参数假设变量名textpane是txtpane1? –

+0

@poundPound你的文本面板显示?显示gui后你有没有调用过日志方法? – davidXYZ

+0

你做错了。 'JTextPane guiConsole = new JTextPane();'不应该在'log'方法中。它应该被声明为一个类字段。最好在刚刚声明'jScrollPane1 = new javax.swing.JScrollPane();'之后的开头。另外,不要忘记将它添加到你的框架,就像这个'getContentPane()。add(guiConsole)'。 – davidXYZ