Ping in JTextArea anzeigen

Diskutiere Ping in JTextArea anzeigen im Netzwerkprogrammierung Forum; Hi, hab ein Tool geschrieben in dem man eine IP Adresse angeben kann und diese wird dann angepingt. Dabei lass ich auch das Ergebnis in einer...

  1. MaxG.
    MaxG. Mitglied
    Hi,
    hab ein Tool geschrieben in dem man eine IP Adresse angeben kann und diese wird dann angepingt. Dabei lass ich auch das Ergebnis in einer JTextArea ausgeben, allerdings wird nur die letzte Zeile ausgegeben. Zum Vergleich habe ich das ganze auch mit System.out.println() auf der Konsole ausgegeben, da gehts. Mit einem JLabel hab ich es auch schon probiert, ging auch nicht. Was muss ich machen das der ganze Text ausgegeben wird?
    Hier der Code:
    Code (Java):
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.WindowConstants;

    public class Ping {

        static JFrame mainFrame;
        static JFrame result;

        static JPanel panelButton;
        static JPanel panelTextField;
        static JPanel panelLabel;
       
        static JLabel infoLabel;
        static JTextArea textAreaResults;
        static JTextField input;
        static JButton buttonStart;

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            mainFrame = new JFrame();
            mainFrame.setSize(250, 175);
            mainFrame.setTitle("Ping Tool");
            mainFrame.setLayout(new BorderLayout());
           
            result = new JFrame();
            result.setSize(500, 350);
           
            textAreaResults = new JTextArea();
            textAreaResults.setEditable(false);
           
            result.add(textAreaResults);
            result.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
           
            panelButton = new JPanel();
            panelTextField = new JPanel();
            panelLabel = new JPanel();
           
            infoLabel = new JLabel("Bitte IP Adresse eingaben");
            input = new JTextField(13);
            buttonStart = new JButton("Ping Starten");
           
            panelButton.add(buttonStart);
            panelTextField.add(input);
            panelLabel.add(infoLabel);
           
            listener();
           
            mainFrame.add(panelLabel, BorderLayout.NORTH);
            mainFrame.add(panelTextField, BorderLayout.CENTER);
            mainFrame.add(panelButton, BorderLayout.SOUTH);
            mainFrame.setVisible(true);
            mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        }
       
       
        static private void showResults() throws IOException{
            mainFrame.dispose();
            result.setVisible(true);
            ProcessBuilder processBuilder = new ProcessBuilder(new String[] { "ping", input.getText().trim() });
            Process process = processBuilder.start();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
                textAreaResults.setText(line);
               
            }
            bufferedReader.close();
           
           
           
        }
       
        static private void listener(){
            buttonStart.addActionListener(new ActionListener() {
               
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    // TODO Auto-generated method stub
                    try {
                        showResults();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            });
        }

    }
     
  2. Vielleicht hilft dir das kostenlose Training weiter --> (hier klicken)
  3. thet1983
    thet1983 Aktives Mitglied
    weil du immer den text überschreibst....
     
  4. MaxG.
    MaxG. Mitglied
    Vielen Dank für die Antwort.
    Hier der Verbesserte Code:
    Code (Java):
    package Sonstige;

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.WindowConstants;

    public class Ping {

        static JFrame mainFrame;
        static JFrame result;

        static JPanel panelButton;
        static JPanel panelTextField;
        static JPanel panelLabel;
       
        static JLabel infoLabel;
        static JTextArea textAreaResults;
        static JTextField input;
        static JButton buttonStart;

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            mainFrame = new JFrame();
            mainFrame.setSize(250, 175);
            mainFrame.setTitle("Ping Tool");
            mainFrame.setLayout(new BorderLayout());
           
            result = new JFrame();
            result.setSize(500, 350);
           
            textAreaResults = new JTextArea();
            textAreaResults.setEditable(false);
           
            result.add(textAreaResults);
            result.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
           
            panelButton = new JPanel();
            panelTextField = new JPanel();
            panelLabel = new JPanel();
           
            infoLabel = new JLabel("Bitte IP Adresse eingaben");
            input = new JTextField(13);
            buttonStart = new JButton("Ping Starten");
           
            panelButton.add(buttonStart);
            panelTextField.add(input);
            panelLabel.add(infoLabel);
           
            listener();
           
            mainFrame.add(panelLabel, BorderLayout.NORTH);
            mainFrame.add(panelTextField, BorderLayout.CENTER);
            mainFrame.add(panelButton, BorderLayout.SOUTH);
            mainFrame.setVisible(true);
            mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        }
       
       
        static private void showResults() throws IOException{
            mainFrame.dispose();
            result.setVisible(true);
            ProcessBuilder processBuilder = new ProcessBuilder(new String[] { "ping", input.getText().trim() });
            Process process = processBuilder.start();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
                textAreaResults.setText(textAreaResults.getText() + "\n" +  line);
            }

            bufferedReader.close();
           
           
           
        }
       
        static private void listener(){
            buttonStart.addActionListener(new ActionListener() {
               
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    // TODO Auto-generated method stub
                    try {
                        showResults();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            });
        }

    }
     
    Grüße Max
     
  5. thet1983
    thet1983 Aktives Mitglied
    schau dir mal die Methode append() an, vl ist die besser geeigent. ;)
     
  6. MaxG.
    MaxG. Mitglied
    @thet1983 Danke für die Antwort hab es gleich ausgetauscht hier der neue Code:
    Code (Java):
    package Sonstige;

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.WindowConstants;

    public class Ping {

        static JFrame mainFrame;
        static JFrame result;

        static JPanel panelButton;
        static JPanel panelTextField;
        static JPanel panelLabel;
       
        static JLabel infoLabel;
        static JTextArea textAreaResults;
        static JTextField input;
        static JButton buttonStart;

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            mainFrame = new JFrame();
            mainFrame.setSize(250, 175);
            mainFrame.setTitle("Ping Tool");
            mainFrame.setLayout(new BorderLayout());
           
            result = new JFrame();
            result.setSize(500, 350);
           
            textAreaResults = new JTextArea();
            textAreaResults.setEditable(false);
           
            result.add(textAreaResults);
            result.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
           
            panelButton = new JPanel();
            panelTextField = new JPanel();
            panelLabel = new JPanel();
           
            infoLabel = new JLabel("Bitte IP Adresse eingaben");
            input = new JTextField(13);
            buttonStart = new JButton("Ping Starten");
           
            panelButton.add(buttonStart);
            panelTextField.add(input);
            panelLabel.add(infoLabel);
           
            listener();
           
            mainFrame.add(panelLabel, BorderLayout.NORTH);
            mainFrame.add(panelTextField, BorderLayout.CENTER);
            mainFrame.add(panelButton, BorderLayout.SOUTH);
            mainFrame.setVisible(true);
            mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        }
       
       
        static private void showResults() throws IOException{
            mainFrame.dispose();
            result.setVisible(true);
            ProcessBuilder processBuilder = new ProcessBuilder(new String[] { "ping", input.getText().trim() });
            Process process = processBuilder.start();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
                textAreaResults.append(line + "\n");
            }

            bufferedReader.close();
           
           
           
        }
       
        static private void listener(){
            buttonStart.addActionListener(new ActionListener() {
               
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    // TODO Auto-generated method stub
                    try {
                        showResults();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            });
        }

    }
     
     
  7. MaxG.
    MaxG. Mitglied
    Ich hab nur noch das Problem das das "ü" immer als Fragezeichen dargestellt wird. Wie kann man das ändern, sodass es auch richtig dargestellt wird?
     
  8. thet1983
    thet1983 Aktives Mitglied
    dem inputstreamreader könnte man ein charset mitgeben, schon mal versucht?
    InputStreamReader
     
  9. MaxG.
    MaxG. Mitglied
    Ja ich ich arbeite mit einem Buffered Reader dem ich einen Input Stream gebe.
    Code (Java):
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
                textAreaResults.append(line + "\n");
            }
     
  10. thet1983
    thet1983 Aktives Mitglied
    ja und dem kann man ein charset mit geben....
    Code (Java):
    new InputStreamReader(process.getInputStream(), "UTF-8")
     
  11. MaxG.
    MaxG. Mitglied
    @thet1983 Sorry hab den Falschen Code gepostet.
    Code (Java):
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(),"UTF-8"));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
                textAreaResults.append(line + "\n");
            }
    Funktioniert aber leider nicht.
    Hab auch schon das Probiert:
    Code (Java):
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(),StandardCharsets.UTF_8));
    Funktioniert auch nicht
     
    Zuletzt bearbeitet: 28. Apr. 2017
  12. Times
    Times Mitglied
    Hey, hatte vor einer Weile das selbe Problem.
    Das Charset der Kommandozeile ist auch nicht UTF-8 sondern "850" (Also einfach nur "850"). So war es zumindest bei mir. Um dein richtiges herauszufinden öffne die Kommandozeile und gib ein:
    chcp
    Dann kommt so etwas wie:
    Aktive Codepage: 850.

    BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream(),Charset.forName("850").newDecoder()));
     
  13. MaxG.
    MaxG. Mitglied
    @Times Danke für die Antwort, habs gleich ausprobiert und es Funktioniert, hätte nicht mehr daran gedacht das das noch was wird.
    Vielen Dank!

    hier noch der Verbesserte Code:
    Code (Java):
    package Sonstige;

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.nio.charset.Charset;
    import java.nio.charset.StandardCharsets;
    import java.util.ArrayList;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.WindowConstants;

    public class Ping {

        static JFrame mainFrame;
        static JFrame result;

        static JPanel panelButton;
        static JPanel panelTextField;
        static JPanel panelLabel;
       
        static JLabel infoLabel;
        static JTextArea textAreaResults;
        static JTextField input;
        static JButton buttonStart;

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            mainFrame = new JFrame();
            mainFrame.setSize(250, 175);
            mainFrame.setTitle("Ping Tool");
            mainFrame.setLayout(new BorderLayout());
           
            result = new JFrame();
            result.setSize(500, 350);
           
            textAreaResults = new JTextArea();
            textAreaResults.setEditable(false);
           
            result.add(textAreaResults);
            result.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
           
            panelButton = new JPanel();
            panelTextField = new JPanel();
            panelLabel = new JPanel();
           
            infoLabel = new JLabel("Bitte IP Adresse eingaben");
            input = new JTextField(13);
            buttonStart = new JButton("Ping Starten");
           
            panelButton.add(buttonStart);
            panelTextField.add(input);
            panelLabel.add(infoLabel);
           
            listener();
           
            mainFrame.add(panelLabel, BorderLayout.NORTH);
            mainFrame.add(panelTextField, BorderLayout.CENTER);
            mainFrame.add(panelButton, BorderLayout.SOUTH);
            mainFrame.setVisible(true);
            mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        }
       
       
        static private void showResults() throws IOException{
            mainFrame.dispose();
            result.setVisible(true);
            ProcessBuilder processBuilder = new ProcessBuilder(new String[] { "ping", input.getText().trim() });
            Process process = processBuilder.start();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(),Charset.forName("850").newDecoder()));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
                textAreaResults.append(line + "\n");
            }

            bufferedReader.close();
           
           
           
        }
       
        static private void listener(){
            buttonStart.addActionListener(new ActionListener() {
               
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    // TODO Auto-generated method stub
                    try {
                        showResults();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            });
        }

    }
     
     
  14. Schau dir jetzt hier den Kurs an und lerne Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)
Die Seite wird geladen...

Ping in JTextArea anzeigen - Ähnliche Themen

Ping tool
Ping tool im Forum Mobile Geräte
Minecraft-Server pingt lange
Minecraft-Server pingt lange im Forum Allgemeine Java-Themen
JPanel rotieren, Bild ist abgeschnitten, Clipping?
JPanel rotieren, Bild ist abgeschnitten, Clipping? im Forum AWT, Swing, JavaFX & SWT
Enums und passendes Mapping
Enums und passendes Mapping im Forum Datenbankprogrammierung
Pinga Ponga steam Spiel + Gratis keys
Pinga Ponga steam Spiel + Gratis keys im Forum Codeschnipsel u. Projekte
Thema: Ping in JTextArea anzeigen