Dimensionamento del JFrame

di il
4 risposte

Dimensionamento del JFrame

Ciao a tutti, è da poco tempo che ho ripreso a programmare in Java ed avevo bisogno di un'informazione: ho costruito la finestra principale del mio programma usando un JSplitPane, ma quando faccio eseguire il programma, la dimensione del JFrame è più piccola di quanto avevo scritto io nelle sue proprietà (ossia setBounds(150, 0, 1024, 768). Qualcuno sa dirmi dove sbaglio?
Vi allego il codice sorgente, grazie in anticipo!

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

import javax.swing.border.LineBorder;
import javax.swing.ImageIcon;
import javax.swing.JTree;
import javax.swing.JScrollPane.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeSelectionModel;

import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;

public class GestioneClienti extends JFrame {
// variabili globali
    private JPanel jContentPane= null;
    private JSplitPane splitPane =  null;
    private JTree jTree;
    JPanel panSx, panDx;
    JLabel titolo;
    ImageIcon home;

// costruttore
    public GestioneClienti()
    {
        super();
        creaGUI();
     }

// main
    public static void main (String Par[])
    {
      new GestioneClienti();
    }

// creo la finestra pricipale
    private void creaGUI() 
    {
        this.setTitle("Sapori di mamma Enza");
        this.setBounds(150, 0, 1024, 768);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setContentPane(getJContentPane());
        this.pack();
        this.setVisible(true);
    }

// metodo del pannello che contiene i componenti
    private JPanel getJContentPane()
    {
        if (jContentPane == null) {

            titolo = new JLabel("GESTIONE CLIENTI", JLabel.CENTER);
            titolo.setFont(new Font("Serif",Font.BOLD,16));
            titolo.setForeground(Color.BLUE);

            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(titolo, BorderLayout.NORTH);
            jContentPane.add(getJSplitPane(), BorderLayout.CENTER);

        }
     return jContentPane;
    }

// metodo che crea lo JSplitPane
 private JSplitPane getJSplitPane()
    {
        if (splitPane == null) {

  // pannello Sx con Jtree
    panSx = new JPanel();
    panSx.setBackground(Color.WHITE);
    //panSx.setSize(224, 718);
    panSx.setBorder(new LineBorder(Color.LIGHT_GRAY,1)); // bordo
    panSx.setVisible(true);
 // creo la struttura ad albero
     DefaultMutableTreeNode top = new DefaultMutableTreeNode("STRUTTURA");
 // creo il primo nodo
     DefaultMutableTreeNode primo = new DefaultMutableTreeNode("INSERIMENTO DATI     ");
     // lo aggiungo alla struttura
     top.add(primo);
     // aggiungo le sotto cartelle al primo nodo
     primo.add(new DefaultMutableTreeNode("Clienti"));
     primo.add(new DefaultMutableTreeNode("Ordini"));

     // creo il secondo nodo
     DefaultMutableTreeNode secondo = new DefaultMutableTreeNode("TABELLA");
     // lo aggiungo alla struttura
     top.add(secondo);
     // aggiungo le sotto cartelle al primo nodo
     secondo.add(new DefaultMutableTreeNode("Storico cilente"));
      // creo l'albero
      jTree = new JTree(top);

   // imposto il layout del pannello sinistro
     panSx.setLayout(new BorderLayout());
     panSx.add(jTree);

                 panDx  = new JPanel();
            panDx.setBackground(Color.LIGHT_GRAY);
            //panDx.setSize(800, 718);
 // CREO UN'ETICHETTA CON IMAGINE PER IL PANNELLO DESTRO
            home = new ImageIcon("/home/gionni/NetBeansProjects/mammaEnza/src/mammaenza/home3.jpg");
            JLabel img = new JLabel("Benvenuti",home, JLabel.CENTER);
            img.setFont(new Font("Serif",Font.BOLD,16));
            img.setForeground(Color.BLUE);
            img.setVerticalTextPosition(JLabel.BOTTOM);
            img.setHorizontalTextPosition(JLabel.CENTER);
            panDx.setLayout(new BorderLayout());
            panDx.add(img, BorderLayout.CENTER);


    // aggiungo i pannelli allo SpiltPane
            splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
            splitPane.setLeftComponent(panSx);
            splitPane.setRightComponent(panDx);
            splitPane.setDividerLocation(1.0);
       }
     return splitPane;
    }     
} // end class

4 Risposte

  • Re: Dimensionamento del JFrame

    Boh... guardando il codice cosi, mi pare di aver avuto lo stesso problema, che ho risolto usando il metodo setResizeWeight(double) che si potrebbe scrivere anche cosi JSplitPane.setResizeWeight(double)

    Prova dovrebbe funzionare
  • Re: Dimensionamento del JFrame

    Ho provato ma non cambia niente, il JFrame rimane sempre piccolo e non mantiene il valore setBounds(150, 0, 1024, 768).
    setResizeWeight(double): specifica come distribuire lo spazio che si viene a creare quando il componente viene ridimensionato, in ogni caso dovrei visualizzare JFrame con le sue caratteistiche...
    Grazie lo stesso!
  • Re: Dimensionamento del JFrame

    Si infatti anche tu hai ragione... piu tardi cerco di eseguire il codice cosi vediamo cosa succede nel concreto... ti faccio sapere
  • Re: Dimensionamento del JFrame

    Non è che quel this.pack() ti annulla il this.setBounds(...) ?
Devi accedere o registrarti per scrivere nel forum
4 risposte