Sviluppo dell'interfaccia utente (confronto tra C# e Java)

Aggiornamento: novembre 2007

È possibile utilizzare la vasta gamma di componenti Windows Form di .NET Framework in C# per programmare applicazioni Windows Form del lato client.

Java

Per la programmazione di Windows Form, la maggior parte delle applicazioni Java utilizza AWT (Abstract Windowing ToolKit) oppure Swing, che a sua volta utilizza l'infrastruttura AWT, incluso il modello di eventi AWT. In AWT sono disponibili tutte le classi e le funzionalità GUI di base.

Esempio Java

Per aggiungere i componenti in genere viene utilizzato un frame, ovvero una finestra con un titolo e un bordo.

JFrame aframe = new JFrame();

La classe Component, un oggetto con rappresentazione grafica, in genere viene estesa e i metodi ereditati vengono utilizzati o sottoposti a override, ad esempio il metodo paint di un componente Shape nel codice illustrato.

    import java.awt.*;
    import javax.swing.*;
    
    class aShape extends JComponent {
    public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D)g;
    
    // Draw the shape.
    }
    
    public static void main(String[] args) {
    JFrame aframe = new JFrame();
    frame.getContentPane().add(new aShape ());
    int frameWidth = 300;
    int frameHeight = 300;
    frame.setSize(frameWidth, frameHeight);
    frame.setVisible(true);
    }
}

Ai fini della gestione degli eventi, è possibile effettuare la registrazione per rimanere in attesa di un evento azione per un componente. Ad esempio, quando viene selezionato e rilasciato un pulsante, AWT invia un'istanza di ActionEvent al pulsante, chiamando processEvent sul pulsante. Il metodo processEvent del pulsante riceve tutti gli eventi per il pulsante e passa un evento azione chiamando il proprio metodo processActionEvent. Quest'ultimo metodo passa l'evento azione a qualsiasi listener di azioni che abbia effettuato la registrazione per gli eventi azione generati dal pulsante.

C#

In C# le classi e lo spazio dei nomi System.Windows.Forms di .NET Framework forniscono una serie completa di componenti per lo sviluppo di Windows Form. Nel codice riportato di seguito vengono ad esempio utilizzati Label, Button e MenuStrip.

Esempio C#

È sufficiente derivare dalla classe Form, come illustrato di seguito:

public partial class Form1 : System.Windows.Forms.Form

Aggiungere quindi i componenti:

this.button1 = new System.Windows.Forms.Button();
this.Controls.Add(this.button1);

Nel codice riportato di seguito viene illustrato come aggiungere un'etichetta, un pulsante e un menu a un form.

namespace WindowsFormApp
{
    public partial class Form1 : System.Windows.Forms.Form
    {
        private System.ComponentModel.Container components = null;

        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.MenuStrip menu1;

        public Form1()
        {
            InitializeComponent();
        }

        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();

            this.label1 = new System.Windows.Forms.Label();
            this.Controls.Add(this.label1);

            this.button1 = new System.Windows.Forms.Button();
            this.Controls.Add(this.button1);

            this.menu1 = new System.Windows.Forms.MenuStrip();
            this.Controls.Add(this.menu1);
        }

        static void Main() 
        {
            System.Windows.Forms.Application.Run(new Form1());
        }
    }
}

Così come in Java, in C# è possibile effettuare la registrazione per rimanere in attesa di un evento per un componente. Ad esempio, quando viene selezionato e rilasciato un pulsante, la fase di esecuzione invia un evento Click a qualsiasi listener che abbia effettuato la registrazione per l'evento Click del pulsante.

private void button1_Click(object sender, System.EventArgs e)
{
}

È possibile utilizzare il codice riportato di seguito per effettuare la registrazione di button1_Click per gestire l'evento Click di un'istanza di Button denominata button1.

// this code can go in InitializeComponent()
button1.Click += button1_Click;

Per ulteriori informazioni, vedere Creazione di applicazioni Web ASP.NET (Visual C#).

Per ulteriori informazioni sulle classi Forms, vedere Controlli Windows Form per funzione e System.Windows.Forms.

Vedere anche

Concetti

Guida per programmatori C#

Progettazione di un'interfaccia utente (Visual C#)

Altre risorse

C# per sviluppatori Java