Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [java] swing e classi

  1. #1

    [java] swing e classi

    Ciao a tutti, è da un bel po' che non metto più mano a java e sono un po' arrugginito (in più non sono mai stato un genio), ma apparte tutto... avrei da chiedervi una cosa:
    sto creando una interfaccia grafica per una chat senza grosse pretese e senza grossi problemi, ma alla lunga il codice diventa illegibile da quanto è lungo; mi sapreste dire se è possibile dividerlo?
    Ad esempio vorrei fare un file che contenga il JFrame con il costruttore il main ed una classe con un JPanel contenente una JLabel, si può fare? Come? :master: :master:
    Grazie

  2. #2
    dividi!
    fai una classe extends JPanel e ci metti dentro i tuoi componenti, poi fai una classe extends JFrame e ci aggiungi il codice che ti serve, crei una classe del tuo panel e lo aggiungi senza fare alltro!!
    certo richiede un po' di sforzo di progettazione e magari il pattern observer ma può funzionare!!

    PS: le classi e soprattutto Swing sono modulari apposta!!
    Blink@go

    "Non tutto quel che è oro brilla, Ne gli erranti sono perduti; Il vecchio ch'è forte non s'aggrinza, Le radici profonde non gelano.Dalle ceneri rinascerà un fuoco, L'ombra sprigionerà una scintilla, Nuova sarà la lama ormai rotta, E re quei ch'è senza corona."

    ------------
    Lang: java 1.4.1 Eclipse

  3. #3
    io però non ci sono riuscito, ti posto il codice:

    import javax.swing.*;
    import java.awt.*;

    public class Prova extends JFrame{

    JFrame jf;

    public Prova(String titolo){
    jf=new JFrame(titolo);
    jf.setBounds(50,50,600,300);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container cont= jf.getContentPane();
    cont.setLayout(new FlowLayout());
    cont.add(new Pan1());
    jf.setVisible(true);
    }

    public static void main(String args[]){
    Prova client=new Prova("Prova JFrame");
    }
    }


    per il file Prova.java e

    import javax.swing.*;
    import java.awt.*;

    class Pan1 extends JPanel{

    String label1="Vis. nella stanza";
    JLabel lab1;
    JPanel pan1;

    public Pan1(){
    lab1=new JLabel(label1);
    pan1=new JPanel();
    pan1.add(lab1);
    }

    }


    per il file Pan1.java
    Vedi errori grossolani? Il compilatore non me ne da, ma poi genera errori in esecuzione

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Un errore grave c'e':
    codice:
    class Pan1 extends JPanel{
      String label1="Vis. nella stanza";
      JLabel lab1;
      JPanel pan1;
    
      public Pan1(){
        lab1=new JLabel(label1);
        pan1=new JPanel();
        pan1.add(lab1);
      }
    }
    Nella parte evidenziata in rosso tu costruisci un nuovo oggetto JPanel, e aggiungi a quello la JLabel per visualizzare il testo. Non lo devi fare, perche' non hai nessun riferimento a quell'oggetto nel programma principale.
    Infatti nel main tu istanzi un nuovo oggetto Pan1, ed e' quello che inserisci nel JFrame, quando in realta' la JLabel che vuoi visualizzare l'hai inserita nel JPanel all'interno di Pan1 (e quindi inaccessibile).

    Prova con:
    codice:
    class Pan1 extends JPanel{
      String label1="Vis. nella stanza";
      JLabel lab1;
    
      public Pan1(){
        lab1=new JLabel(label1);
        add(lab1);
      }
    }
    Credo che fosse questo cio' che volevi ottenere.
    Ciao,
    Lorenzo

  5. #5
    Probabilmente hai ragione ed ora lo provo, però oggi l'ho ricompilato e lanciato e funziona, ora provo il tuo che se funziona è sicuramente più giusto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.