Jpanel

di il
2 risposte

Jpanel

Ragazzi ho dei problemi con questo elemento, vi spiego , utilizzo netbeans 7.3 , per intenderci ho creato una classe swing frame, al suo interno ho messo 2 jpanel uno sopra all'altro, in ogni panel ci sono elementi come textfield e button, il problema che al momento dell'esecuzione, si vede il panel che ho imposta la visibilita in true e fin qui tutto ok, ma se io passo con il mouse sopra agli elementi dell'altro panel nascosto appaiono come per magia.. ma dovrebbero sempre essere nascosti perchè sono elementi del panel nascosto, la visibilita l'ho impostata nel costruttore del frame, jPanel1.setVisibile(false); e l'altro true ovviamente
spero in una risposta

2 Risposte

  • Re: Jpanel

    Need code
  • Re: Jpanel

    Premesso che farsi autogenerare il codice (specialmente per le GUI) da un IDE è sempre una pessima idea poichè il codice generato è:

    1) Non modificabile (i miei programmi me li gestisco sempre tutti, non esiste che qualcuno o qualcosa non mi permetta di modificare parte del codice)

    2) Non manutenibile

    3) Ridondante

    4) Altamente inefficiente

    5) Altre varie ed eventuali

    Questo piccolo programmino scritto al volo, dimostra che, se le cose sono fatte in modo consapevole (ovvero il codice scritto è stato scritto così perchè si vuole che quello sia il risultato), allora funzionano anche.
    
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    
    public class PanelNascosto extends JFrame implements ActionListener {
       private JPanel panelVisibile;
       private JPanel panelNascosto;
    
       private JTextField txtVisibile;
       private JTextField txtNascosta;
    
       private JButton cmdShowHide;
       private boolean show;
    
       public PanelNascosto() {
          Container c = getContentPane();
          c.setLayout( new BorderLayout() );
    
          show = false;
    
          txtVisibile = new JTextField();
          txtNascosta = new JTextField();
    
          cmdShowHide = new JButton("Visualizza");
          cmdShowHide.addActionListener( this );
    
          panelVisibile = new JPanel( new BorderLayout() );
          panelVisibile.add(txtVisibile, BorderLayout.CENTER);
          panelVisibile.add(cmdShowHide, BorderLayout.EAST);
          panelVisibile.setBorder( BorderFactory.createEmptyBorder(0, 0, 30, 0) );
    
          panelNascosto = new JPanel( new BorderLayout() );
          panelNascosto.add(txtNascosta, BorderLayout.NORTH);
          panelNascosto.setVisible( false );
    
          c.add(panelVisibile, BorderLayout.NORTH);
          c.add(panelNascosto, BorderLayout.CENTER);
    
          setTitle("Pannelli nascosti");
          setSize(800, 600);
          setDefaultCloseOperation( EXIT_ON_CLOSE );
          setLocationRelativeTo( null );
          setVisible( true );
       }
    
       @Override
       public void actionPerformed(ActionEvent ae) {
          if ( show ) {
             panelNascosto.setVisible( false );
          } else {
             panelNascosto.setVisible( true );
          }
          cmdShowHide.setText(show ? "Visualizza" : "Nascondi");
          show = !show;
          doLayout();
       }
    
       public static void main(String[] args) {
          PanelNascosto pn = new PanelNascosto();
       }
    }
    
    Prendi spunto, osserva come sono costruiti e disposti gli oggetti, studia i LayoutManager ed impara a conoscerli/usarli e farai molto prima a scrivere il codice a mano che aspettare di ottenere lo stesso risultato usando l'IDE.

    Ciao
Devi accedere o registrarti per scrivere nel forum
2 risposte