Java(Netbeans) Programma CMD

di il
4 risposte

Java(Netbeans) Programma CMD

Salve a tutti , sono nuovo qui nel forum .. mi servirebbe un aiuto riguardo il Programma che entro domani dovrò consegnare al prof.
In pratica il programma è come una sorta di CMD dove ad ogni JButton cliccato (Esempio Ipconfig) stampa il rispettivo /ipconfig come farebbe nel CMD.
Però ho alcuni problemi...
1)Ho inserito una immagine di sfondo e quando faccio Run tutti i JButton e le TextArea non si vedono fino a quando non gli passo sopra col mouse
2)Mi servirebbe un comando per creare un'altro bottone che mi consenta di stampare sul Desktop un vero e proprio file di testo (Esempio ipconfig e mi stampo le informazioni cliccando su salva in un documento txt sul desktop)
3)Forse ci sono altri comandi che dovrei aggiungere tipo NSLOOKUP ma non sono molto bravo con java ...

Se potete aiutarmi ne sarei molto grato !!
Distinti saluti , programmatori!!

package processi; 
import java.awt.*;
import java.awt.Color;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javafx.scene.layout.Background;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.imageio.*;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import static javax.swing.text.StyleConstants.Background;

public class Interfaccia extends Frame implements ActionListener {
    
    //Dichiarazioni.
    JButton ipconfig,netstat,ping ,tracert;
    JComboBox cbox;
    JTextField txtftrc ,txtfp;
    JTextArea tArea;
    Operazioni op;
    JFrame f;
    JLabel sfondo;

    
    Interfaccia () throws IOException{
                op= new Operazioni();
                addWindowListener(new Close());
                setSize(945,730);
                setLayout(null);
                setTitle("Processi CMD");
                setResizable(false);
                

                //Prova Sfondo.
                
                ImageIcon img = new ImageIcon("code.jpg");
                sfondo = new JLabel("",img,JLabel.CENTER);
                sfondo.setBounds(0, 0, 945, 730);
                add(sfondo);                
                
           
                //Area di Testo.
                tArea=new  JTextArea("");
                tArea.setFont(new Font("Slider", Font.BOLD, 17));
                tArea.setBackground(Color.WHITE);
                tArea.setForeground(Color.BLACK);
                tArea.setBounds(20,205,900,500);
                add(tArea);

                
                //Ipconfig.
                ipconfig=new JButton("IPCONFIG");
                ipconfig.addActionListener(this);
                ipconfig.setFont(new Font("Lancer", Font.BOLD, 23));
                ipconfig.setBackground(Color.GREEN);
                ipconfig.setForeground(Color.BLACK);
                ipconfig.setBounds(25,50,150,60);
                add(ipconfig);
                
                
                //Ipconfig Selezioni.
                String[] ipconfOptions = { "ALL", "RELEASE", "RENEW", "DisplayDNS", "FlushDNS" };
                cbox=new JComboBox(ipconfOptions);
                cbox.addActionListener(this);
                cbox.setBackground(Color.WHITE);
                cbox.setForeground(Color.BLACK);
                cbox.setBounds(174,50,70,60);
                add(cbox);
                
                
                //Netstat.
                netstat=new JButton("NETSTAT");
                netstat.addActionListener(this);
                netstat.setFont(new Font("Lancer", Font.BOLD, 25));
                netstat.setBackground(Color.GREEN);
                netstat.setForeground(Color.BLACK);
                netstat.setBounds(25,125,150,60);
                add(netstat);
                    
                
                //Tracert.
                tracert=new JButton("TRACERT");
                tracert.addActionListener(this);
                tracert.setFont(new Font("Lancer", Font.BOLD, 23));
                tracert.setBackground(Color.GREEN);
                tracert.setForeground(Color.BLACK);
                tracert.setBounds(270,50,150,60);
                add(tracert);
                
                
                //Area di testo (TRACERT)
                txtftrc=new JTextField("");
                txtftrc.addActionListener(this);
                txtftrc.setFont(new Font("Lancer", Font.BOLD, 27));
                txtftrc.setBackground(Color.WHITE);
                txtftrc.setForeground(Color.BLACK);
                txtftrc.setBounds(420,50,150,35);
                add(txtftrc);
                    
                
                //Ping.  
                ping=new JButton("PING");
                ping.addActionListener(this);
                ping.setFont(new Font("Lancer", Font.BOLD, 25));
                ping.setBackground(Color.GREEN);
                ping.setForeground(Color.BLACK);
                ping.setBounds(270,125,150,60);
                add(ping);
                
                
                //Area di testo (PING).
                txtfp=new JTextField("");
                txtfp.addActionListener(this);
                txtfp.setFont(new Font("Lancer", Font.BOLD, 25));
                txtfp.setBackground(Color.WHITE);
                txtfp.setForeground(Color.BLACK);
                txtfp.setBounds(420,125,150,35);
                add(txtfp);
                    
                setVisible(true);
}

    
    @Override
    public void actionPerformed(ActionEvent f) {

       if(f.getActionCommand()=="IPCONFIG"){
           System.out.println(op.printIpConfig());
           tArea.setText(op.printIpConfig());
        }
       else if(f.getActionCommand()=="TRACERT"){
           tArea.setText(op.printTracert(txtftrc.getText()));
        }
       else if(f.getActionCommand()=="PING"){
           tArea.setText(op.printPing(txtfp.getText()));
        }
       else if(f.getActionCommand()=="NETSTAT"){
           tArea.setText(op.printNetstat());
        }
    }

 }

4 Risposte

  • Re: Java(Netbeans) Programma CMD

    Frank22 ha scritto:


    1)Ho inserito una immagine di sfondo e quando faccio Run tutti i JButton e le TextArea non si vedono fino a quando non gli passo sopra col mouse
    Innanzitutto hai tolto il layout manager ( setLayout(null) ) e poi hai usato il posizionamento "assoluto". Di per sé non è questo il problema. Ma il fatto che c'è un componente (il JLabel di "sfondo") che è sovrapposto ad altro (gli altri componenti).

    E questo fa entrare in gioco il concetto dello z-order, cioè l'ordine con cui il framework disegna i componenti. La spiegazione è nella documentazione ufficiale ma comunque in breve: all'interno di un contenitore ciascun componente ha uno z-order index e il componente con questo indice più BASSO viene disegnato per ULTIMO (cioè logicamente sta "sopra" tutti gli eventuali altri).

    Se vuoi che il componente JLabel di sfondo sia subito disegnato per PRIMO (così sta "sotto" tutti gli altri), deve avere il valore di z-order index più alto. Questo lo si ottiene semplicemente ... facendo in modo che il JLabel di sfondo sia l'ultimo aggiunto nel contenitore. Mentre invece ora è il primo di cui fai add().

    Comunque "giocare" con lo z-order non è il modo più buono per avere uno sfondo. Ci sono alternative migliori.

    Frank22 ha scritto:


    2)Mi servirebbe un comando per creare un'altro bottone che mi consenta di stampare sul Desktop un vero e proprio file di testo (Esempio ipconfig e mi stampo le informazioni cliccando su salva in un documento txt sul desktop)
    Cosa vuol dire per te "stampare sul Desktop"?? Scrivere un file di testo sul desktop? Per scrivere un file basta usare le classi del package java.io. Ma c'è comunque la questione di rintracciare il percorso del desktop. Dipende fortemente dal sistema operativo (e dipende pure dall'utente loggato).


    P.S. dato che hai usato componenti Swing, usa anche una finestra Swing: JFrame invece che Frame. Che è anche più semplice da gestire: non serve più di per sé un listener per la chiusura, basta impostare il default close operation.
  • Re: Java(Netbeans) Programma CMD

    Visto che sono un pò inesperto al riguardo potresti scrivermi il codice ?
    Scrivere sul Desktop intendo che ci sia un bottone "Salva" e poi apre tutte le Directory dove si può salvare il file (Ad esempio nel desktop)
    Il prof mi aveva accennato che forse bisognava fare un "Refresh" del programma così i bottoni si vedevano subito all'inizio
  • Re: Java(Netbeans) Programma CMD

    Frank22 ha scritto:


    Visto che sono un pò inesperto al riguardo potresti scrivermi il codice ?
    Il

    add(sfondo);

    deve essere l'ultimo add che fai, non il primo. Si tratta di spostare 1 riga (se vuoi, anche la creazione di quel JLabel).

    Frank22 ha scritto:


    Scrivere sul Desktop intendo che ci sia un bottone "Salva" e poi apre tutte le Directory dove si può salvare il file (Ad esempio nel desktop)
    Se vuoi far scegliere il nome/locazione del file all'utente, puoi usare JFileChooser che se usato come dialog modale è la classica dialog per "sfogliare" il file-system.

    Essendo per un salvataggio, ovviamente nella modalità save e non open.

    Frank22 ha scritto:


    Il prof mi aveva accennato che forse bisognava fare un "Refresh" del programma così i bottoni si vedevano subito all'inizio
    No, non serve se si fa la cosa "giusta".
  • Re: Java(Netbeans) Programma CMD

    Ok adesso proverò . Grazie mille per il suo aiuto !!
Devi accedere o registrarti per scrivere nel forum
4 risposte