InputStream direkt in einem EditorPane ausgeben lassen?
-
Hi,
kennt jemand eine einfache Möglichkeit wie man einen InputStream, zB. aus einem Socket, oder einem File direkt auf einem EditorPane darstellen lassen kann?Es gibt da ein editor.read(inputStream, dev) aber da weiss ich nicht genau wie ich das nutzen soll.
übergebe ich dem read meinen InputStream, bleibt das Programm bei dem read(...)stehen.Oder gibt es sowas wie editor.addText("meintext");??
Klar kann man getText() und setText() machen, aber gibts da nichts besseres?mein eigentliches Ziel ist: Ich möchte so eine Art Console in meinem Programm machen.
hier mal ein kleiner Entwurf meines Problems wobei das EditorPane die Anwendung anhält:
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; public class Console extends JFrame{ private JPanel top = new JPanel(new FlowLayout()); private JPanel bottom = new JPanel(new FlowLayout()); private JButton pingButton = new JButton("Ping Host"); private JButton knopf2 = new JButton("Knopf2"); private JTextField host = new JTextField("192.168.0.1"); private JLabel label = new JLabel("Host zum anpingen:"); private JLabel status = new JLabel("Status: Programm gestartet"); private JEditorPane edit = new JEditorPane(); public Console() { //hinzufügen zum contentPane this.getContentPane().setLayout( new BorderLayout() ); this.getContentPane().add(top, BorderLayout.NORTH); this.getContentPane().add(bottom, BorderLayout.SOUTH); this.getContentPane().add(edit, BorderLayout.CENTER); //Hinzufügen der Komponenten zum top-Panel top.add(label); top.add(host); top.add(status); //Hinzufügen der Komponenten zum bottom-Panel bottom.add(pingButton); bottom.add(knopf2); //ActionListener hinzufügen pingButton.addActionListener(new ActionListener(){ private InputStream in; public void actionPerformed(ActionEvent event){ try { //Connection herstellen Socket x = new Socket(); x.connect( new InetSocketAddress( host.getText(), 7 ), 500 ); //Zum Host etwas schicken x.getOutputStream().write(0xff); x.getOutputStream().write(0xff); x.getOutputStream().write(0xff); x.getOutputStream().write(0xff); //vom Host empfangen in = x.getInputStream(); status.setText ( "Status: 1. Return-Wert: "+ in.read() ); System.out.println( "Status: 1. Return-Wert: "+ in.read() ); edit.read(in , "test"); } catch (IOException e) { status.setText( "Fehler: " + e.getMessage() ); System.out.println( "Fehler: " + e.getMessage() ); host.requestFocus(); } } }); //aber hier wird das JFrame konfiguriert und angezeigt this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); edit.setPreferredSize( new Dimension(300,300) ); this.pack(); this.setVisible(true); } public static void main(String[] args) { new Console(); System.out.println("programm gestartet...."); } }
-
also ich mach das erstmal mit
String temp = edit.getText();
edit.setText(temp + data);aber warum bleibt die gesamte Anwendung bei der Zeile:
edit.read(in , "test");
im letztem geposteten code immer stehen?
Muss man den InputStream erst schliessen, oder wartet das read auf ein bestimmtes Zeichen, oder...???