2012-11-27 4 views
-1

첫 번째 메신저와 영어로 좋지 않음
에 system.out.print를 넣을 수 있습니까? system.out.print를 프레임에 넣을 수 있습니까? 텍스트 필드 나 그와 비슷한 것으로 모든 출력물을보고 싶다면 어떻게해야할까요? 나는 텍스트 필드에 출력 인쇄물을 넣을 수 있지만, 단지 하나의 프로세스를 settext한다. 내 출력의 모든 로그를 하나의 출력이 아닌 텍스트 필드에서 원합니다.
죄송 경우 더미 질문하기 전에 답변에 대한 감사 (텍스트 필드)프레임 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 

} 내 문제 요겐에 가져 오는

덕분에 내가 코드를 가지고 있고 나는 텍스트 2에 내 모든 출력을 데려 가고 싶다는
, 정말 고마워요 각 text2.setText() 전에

+0

출력 로그를 System.out.print()로 리디렉션하려면 http://docs.oracle.com/javase/6/docs/api/java/lang/을 참조하십시오. System.html # setOut (java.io.PrintStream) – Pr0gr4mm3r

+0

내가 전에 언급했듯이, 나는 초보자이고 영어로는 좋지 않다. 예를 들어 그것을 얻지 못한다. –

답변

0

전에 텍스트를 먼저 가져온 다음 원래 문자열에 새 문자열을 추가 할 수 있습니다.

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

setText 방법 자체를 사용하여 첨부 된 텍스트로 text를 업데이트

setText2Text("Your message here") 
+0

작동하지 않았다. 단지 첫 번째 프로세스를 출력한다. –

+0

세 가지 방법 모두에 코드를 추가 하시겠습니까? 또는 중복 코드를 줄이려면 자신 만의 setTextMsg (String msg) 메서드를 작성할 수 있습니다. – Don

+0

세 가지 방법 모두에 코드를 추가합니다. 그럼 내가 전에 언급 한대로 그것을 줄이고 여전히 dosn't 작동 –

0

유지하는

text2.setText("Your message here") 

교체 . 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 메소드를 정의 : 외부를 인스턴스화 시도하고 텍스트를 설정하기 위해 동일한를 사용하여 GUI에서 콘솔을 시뮬레이션하기 위해

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

대답 yogendra 주셔서 감사합니다하지만 작동하지 않았다 –

+0

@poundPound : 죄송합니다. 나는 오타가 있었어. 지금 수정되었습니다 (답변이 업데이트되었습니다). 아직 작동하지 않으면 확인하고 알려주십시오. –

+0

작동하지만 정적 문맥으로 설정할 수 있습니까? cek 내 업데이트 –

0

, 당신은해야 할 수도 있습니다 JTextPaneJTextField은 한 줄의 텍스트 만 표시 할 수 있기 때문에 JTextPane입니다. 텍스트 창에 "인쇄"의 고유 한 방법을 만들어야합니다 (GUI로 인쇄하려면 System.out.println을 사용할 수 없습니다).

코드 샘플 :이 같은 기능을 만들 수 있습니다

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

관련 문제