Avatar billede dmg Nybegynder
07. maj 2009 - 02:37 Der er 3 kommentarer og
1 løsning

Åbn command prompt ved click på knap

Hej Experts,

Er det muligt at få et eksempel på hvordan jeg laver en interface knap og når man trykker åbnes der en windows kommand prompt hvor der skal fyres en ping af til f.eks ping 4.2.2.1 -t

Jeg har fundet en masse koder, men har brug for et simpelt eksempel for at lære og ikke blive forvirret af alt muligt andet kode.
Håber i kan hjælpe.
Takker
Avatar billede arne_v Ekspert
07. maj 2009 - 03:19 #1
Følgende virker, men jeg ved ikke om det er helt simpelt:

import java.awt.BorderLayout;
import java.awt.EventQueue;
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.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class GuiPinger extends JFrame {
    private JTextField tf;
    private JTextArea ta;
    private JButton btn;
    public GuiPinger() {
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setTitle("Pinger");
        setLayout(new BorderLayout());
        tf = new JTextField();
        JPanel top = new JPanel();
        top.setLayout(new BorderLayout());
        top.add(new JLabel("Host: "), BorderLayout.WEST);
        top.add(tf, BorderLayout.CENTER);
        getContentPane().add(top, BorderLayout.NORTH);
        ta = new JTextArea();
        getContentPane().add(new JScrollPane(ta), BorderLayout.CENTER);
        btn = new JButton("Ping");
        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ta.setText("");
                Thread t = new Thread(new Runnable() {
                    public void run() {
                        try {
                            Process p = Runtime.getRuntime().exec(new String[] { "ping", tf.getText() });
                            BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
                            String line;
                            while((line = br.readLine()) != null) {
                                final String line2 = line + "\n";
                                EventQueue.invokeLater(new Runnable() {
                                    public void run() {
                                        ta.append(line2);
                                    }
                                });
                            }
                            p.waitFor();
                        } catch (IOException e) {
                            JOptionPane.showMessageDialog(null, e.getMessage());
                        } catch (InterruptedException e) {
                            JOptionPane.showMessageDialog(null, e.getMessage());
                        }
                    }
                });
                t.start();
            }
        });
        getContentPane().add(btn, BorderLayout.SOUTH);
        setSize(800, 600);
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new GuiPinger();
                f.setVisible(true);
            }
        });
    }
}
Avatar billede arne_v Ekspert
07. maj 2009 - 03:23 #2
Den her variant er meget simplere, men vil også kunne give diverse mystiske fejl:

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.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class BadGuiPinger extends JFrame {
    private JTextField tf;
    private JTextArea ta;
    private JButton btn;
    public BadGuiPinger() {
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setTitle("Pinger");
        setLayout(new BorderLayout());
        tf = new JTextField();
        JPanel top = new JPanel();
        top.setLayout(new BorderLayout());
        top.add(new JLabel("Host: "), BorderLayout.WEST);
        top.add(tf, BorderLayout.CENTER);
        getContentPane().add(top, BorderLayout.NORTH);
        ta = new JTextArea();
        getContentPane().add(new JScrollPane(ta), BorderLayout.CENTER);
        btn = new JButton("Ping");
        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ta.setText("");
                try {
                    Process p = Runtime.getRuntime().exec(new String[] { "ping", tf.getText() });
                    BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
                    String line;
                    while ((line = br.readLine()) != null) {
                        final String line2 = line + "\n";
                        ta.append(line2);
                    }
                    p.waitFor();
                } catch (IOException ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                } catch (InterruptedException ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
            }
        });
        getContentPane().add(btn, BorderLayout.SOUTH);
        setSize(800, 600);
    }
    public static void main(String[] args) {
        JFrame f = new BadGuiPinger();
        f.setVisible(true);
    }
}
Avatar billede arne_v Ekspert
04. juli 2009 - 04:33 #3
OK ?
Avatar billede dmg Nybegynder
25. august 2010 - 22:11 #4
Hej Arne,

Tak for svar. Jeg noede aldrig hvor jeg ville med dette og glemte alt om det.
Sorry det to saa lang tid at komme tilbage til dig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester