Visualizzazione dei risultati da 1 a 4 su 4

Discussione: JPanel non si aggiorna

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137

    JPanel non si aggiorna

    Vi scrivo un po' di codice prima di esporvi il problema.

    ...
    ...
    private void initGUI() {
    try {
    this.setPreferredSize(new java.awt.Dimension(640, 480));
    this.setSize(640, 480);
    this.setLayout(null);
    jPanel1=new RPanel();
    jPanel1.setLayout(null);
    jPanel2=new RPanel();
    jPanel2.setLayout(null);
    {
    JScrollPane scroll1 = new JScrollPane(jPanel1);
    JScrollPane scroll2 = new JScrollPane(jPanel2);
    jSplitPane2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,scroll1,scrol l2);
    this.add(jSplitPane2);
    jSplitPane2.setBounds(0, 0, 185, 454);
    jSplitPane2.setDividerLocation(100);
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    }

    ...
    ...

    public class RPanel extends JPanel {
    private String[]dest1;
    private int i;
    public RPanel(){
    super();
    dest1=utility.listafile("Data/");
    int d = 5;
    for (i = 0; i < dest1.length; i++){
    add(new RJButton(dest1[i],d));
    d+=25;
    }
    }
    }
    public class RJButton extends JButton {
    private int d;
    public RJButton(String lab,int d){
    super();
    final String tmp=lab;
    setMargin(new Insets(0, 0, 0, 0));
    setText(lab);
    setBounds(5, d, 170, 25);
    addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
    System.out.println(tmp);
    create2(tmp);
    }
    });
    }
    }
    ...
    ...
    public class RJButton2 extends JButton {
    private int d;
    public RJButton2(String lab,String datasetread,int d){
    super();
    final String tmp=lab;
    final String dsr= datasetread;
    setMargin(new Insets(0, 0, 0, 0));
    setText(lab);
    setBounds(5, d, 170, 25);
    }
    }
    ...
    ...
    private void create2 (String datasetread){
    String[]dest2=utility.listafile("Data/"+datasetread);
    int f =5;
    for (int y = 0; y < dest2.length; y++){
    jPanel2.add(new RJButton2(dest2[y],datasetread,f));
    f+=25;
    }
    }


    Questo codice mi genera un frame con all'interno un "JSplitPane".
    Nella parte superiore (JPanel1)ho un "RPanel" che mi genera un pulsante per ogni cartella all'interno di "Data/". Cliccando su ognuno di questi vorrei ottenere un pulsante all'interno della parte inferiore (JPanel2) per ognuno dei file all'interno della cartella corrispondente al bottone in JPanel1.Questo viente realizzato attraverso la funzione "create2 (String datasetread)" .Sembra funzionare tutto quando clicco su un pulsante nella parte superione generandomi i pulsanti desiderati nella parte inferiore.

    Il problema sorge quando premo su un altro pulsante della parte superiore perche non mi aggiorna il jPanel sotto.
    Dovrei trovare un modo per cancellare tutti i pulsanti generati col primo click, in modo da visualizzare con correttezza quelli generati cliccando su un altro pulsante.

    Avete suggerimentisu come modificare il codice? Grazie...

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

    Re: JPanel non si aggiorna

    Originariamente inviato da Macgiglio
    Il problema sorge quando premo su un altro pulsante della parte superiore perche non mi aggiorna il jPanel sotto.
    Se in un container non c'è un layout manager e si aggiungono/rimuovono dinamicamente componenti, è bene poi fare un repaint() sul container.
    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
    Sep 2007
    Messaggi
    137
    Provato, ma niente , i tasti generati non li cancella e ne aggiunge altri se in caso ci stanno piu file nella seconda cartella....
    es.
    cartella1 con file1,file2,file3
    cartella2 con file4,file5,file6,file7,file8

    clicco per visualizzare cartella1 e mi visualizza i tasti file1,file2,file3
    se poi clicco per visulizzare catella 2 mi visualizza i tasti file1,file2,file3,file7,file8

    ho provato anche con removeall() ma niente....

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    risolto...grazie a tutti

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.