Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331

    [java] problema con classi

    salve a tutti,
    ho creato un programma in java con eclipse e tramite codice creo le jlabel in una jframe. Inoltre ho realizzato una classe che a ogni secondo fa una query e popola queste jlabel. Il mio problema è che in questa classe mi dice che la label non è dichiarata.
    dove sbaglio?
    grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java] problema con classi

    Originariamente inviato da xedy
    ho creato un programma in java con eclipse e tramite codice creo le jlabel in una jframe. Inoltre ho realizzato una classe che a ogni secondo fa una query e popola queste jlabel. Il mio problema è che in questa classe mi dice che la label non è dichiarata.
    dove sbaglio?
    E come possiamo saperlo senza vedere il codice che hai scritto? Sono sicuramente le solite questioni di "design" .... nel senso che devi solo studiare e stabilire che cosa le varie classi devono "sapere" delle altre e quindi poter avere i reference disponibili per fare quello che vuoi.
    E per fare questo è sufficiente avere una buona conoscenza dei concetti della programmazione ad oggetti.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    questo è il codice:

    public class TestFrame extends JFrame
    {


    public JLabel label[];
    public JLabel label1[];




    public TestFrame (Image img)
    {
    super ("Test Background Panel");

    setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    setSize (900, 500);

    JPanel panel = new BackgroundPanel (img);
    panel.setLayout(null);

    int y = 15;
    label=new JLabel[y];
    int x = 0;
    int z = 120;
    int i = 0;
    for(i=0;i<y;i++)
    {
    System.out.println(i);
    label[i]= new JLabel();

    label[i].setBounds(x,z,30,30);

    panel.add(label[i]);
    z = z + 40;
    }
    label1=new JLabel[y];
    x = 100;
    i = 0;
    z = 120;
    for(i=0;i<y;i++)
    {
    System.out.println(i);
    label1[i]= new JLabel("boat n.:"+i);

    label1[i].setBounds(x,z,80,30);

    panel.add(label1[i]);
    z = z + 40;
    }



    add (panel);
    popola();
    }
    .
    .
    .
    public static void main (String[] args)
    {

    try
    {

    final Image img = ImageIO.read (new File ("grafica_timing/race.jpg"));
    SwingUtilities.invokeLater (new Runnable ()
    {
    public void run ()
    {
    TestFrame f = new TestFrame (img);
    //f.setUndecorated(true);

    f.setVisible (true);
    Timer timer=new Timer();
    timer.schedule(new Task(),0,1000);


    }
    });
    }
    catch (Exception e)
    {
    System.out.println (e);
    }
    }


    }

    class Task extends TimerTask{
    private static final String id = 0;
    JLabel label2[];

    public void run(){
    ResultSet rs;
    rs = Database.eseguiQuery("SELECT * from communications where id > '" + id +"' order by IdTeam");
    int i;
    String a;

    while (rs.next()) {
    a = rs.getString("No");
    i = rs.getInt("idrace");
    label2[i].setHorizontalAlignment(JLabel.RIGHT);
    label2[i].setVerticalAlignment(JLabel.CENTER);
    label2[i].setFont(new java.awt.Font ("Helvetica", 0, 20));
    label2[i].setText(a);

    id = rs.getString("No");


    }
    }
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    scusa la seconda parte di codice è questa:

    .
    .
    .
    class Task extends TimerTask{
    private static final String id = 0;


    public void run(){
    ResultSet rs;
    rs = Database.eseguiQuery("SELECT * from communications where id > '" + id +"' order by IdTeam");
    int i;
    String a;

    while (rs.next()) {
    a = rs.getString("No");
    i = rs.getInt("idrace");
    label1[i].setHorizontalAlignment(JLabel.RIGHT);
    label1[i].setVerticalAlignment(JLabel.CENTER);
    label1[i].setFont(new java.awt.Font ("Helvetica", 0, 20));
    label1[i].setText(a);

    id = rs.getString("No");


    }
    }
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    ho risolto grazie

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da xedy
    ho risolto grazie
    Come??? Perché tieni presente un'altra cosa: il run() del tuo Task "gira" in un thread che non è il EDT (event dispatch thread) ma è un thread creato dal Timer.
    Questo vuol dire che non dovresti accedere alla interfaccia utente nel contesto di quest'altro thread!!!! Cioè fare es. setHorizontalAlignment, setText ecc... sui componenti non è "safe" nel contesto di un thread che non è il EDT!!!

    ---> Threads and Swing
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    no l'allineamento e tutto il resto li devo fare nella classe principale lì deve solo popolare al label era un codice di prova cmq ho richiamato la label usando il nome della classe cioè:
    nomeclasse.variabile

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da xedy
    no l'allineamento e tutto il resto li devo fare nella classe principale lì deve solo popolare al label
    Vabbè ... ovviamente non so cosa stai cercando di fare di preciso. La regola in Swing comunque è molto semplice: salvo casi particolari (e documentati), è "safe" accedere alla interfaccia utente (qualunque get/set/add/ecc...... su componenti) solo nel contesto del EDT.

    Originariamente inviato da xedy
    ho richiamato la label usando il nome della classe cioè:
    nomeclasse.variabile
    Design poco buono, in generale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    cosa intendi per design poco buono?

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da xedy
    cosa intendi per design poco buono?
    Accedere direttamente a variabili di istanza o ad esempio (ancora peggio) mettere variabili di "classe" (static) solo per poter "passare" dati tra una classe e un'altra, generalmente è visto come un cattivo design e segno di scarsa conoscenza della OOP.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2025 vBulletin Solutions, Inc. All rights reserved.