Dimensionamento del JFrame

di Anonimizzato7883 il
4 risposte
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

  • 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
  • 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!
  • Si infatti anche tu hai ragione... piu tardi cerco di eseguire il codice cosi vediamo cosa succede nel concreto... ti faccio sapere
  • Non è che quel this.pack() ti annulla il this.setBounds(...) ?
Devi accedere o registrarti per scrivere nel forum
4 risposte