0

最初は初心者で英語が苦手で、
system.out.printをフレームに入れることは可能ですか? すべての出力をテキストフィールドなどに表示したい場合を考えてみましょう。私はテキストフィールドに出力印刷を入れることができますが、それは1つのプロセスでテキストを設定するだけです。1 つの出力だけでなく、出力のすべてのログがテキスト フィールドに表示されます。
ダミーの質問で申し訳ありませんが、コードを作成する前に答えてくれてありがとう。
すべての出力を text2(textfield) に入れたい

   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に入ってくれてありがとう、本当に感謝しています

4

3 に答える 3

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;
  }
于 2012-11-27T18:01:13.570 に答える
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")
于 2012-11-27T17:54:33.237 に答える
0

GUI でコンソールをシミュレートするには、1 行のテキストしか表示できない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");て同じテキストをテキスト ペインに出力するだけです。

于 2012-11-27T19:02:20.960 に答える