Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Well
    Registrato dal
    Jan 2009
    Messaggi
    37

    Conflitto tra JDesktopPane e JToolBar

    Salve, volevo creare un semplice programmino, basato su un JDesktopPane, e le relative JInternalFrames, e posizionare nella parte bassa della finestra una JToolBar, a mo' di "Sistema Operativo".
    Ma, purtroppo quest'ultima non mi viene visualizzata... Qualcuno saprebbe illustrarmi il problema?
    Posto il sorgente:

    codice:
    package myvirtualdesktop;
    
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    
    
    
    public class MyVirtualDesktop {
    
      static JFrame window = new JFrame();
        
        
    //-------------------------------------------------------------------------//    
        public static void main(String[] args) {
         
    
    //VIRTUAL DESKTOP     
            JDesktopPane desktop = new JDesktopPane();
            desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
            
        //First Internal Frame    
            JInternalFrame firsintframe = new JInternalFrame("Benvenuto su MyVirtualDesktop");
            firsintframe.setVisible(true);
            firsintframe.setSize(350, 400);
            firsintframe.setClosable(true);
            firsintframe.setIconifiable(true);
            
            String presentation = "<html>\n" +
                    "<h2>Benvenuto in MyVirtualDesktop!</h2>\n" +
                    "
    \n" +
                    "Grazie a questo software open source, avrai la possibilità di usufruire di un desktop virtuale completo di:\n" +
                    "<ul>\n"+
                    "[*]\n" +
                    "[*]\n" +
                    "[*]\n" +
                    "
    \n" +
                    "[/list]\n";
            
            JTextArea htmlcode = new JTextArea();
            htmlcode.setText(presentation);
            JLabel htmllabel = new JLabel(presentation);
            firsintframe.add(htmllabel, BorderLayout.NORTH);
            desktop.add(firsintframe);
            
            
    //TOOLBAR 
            JToolBar toolbar = new JToolBar();
            ImageIcon windowico = new ImageIcon("C:/Users/Th3Evolution/Documents/NetBeansProjects/Work/images");
            JButton newWindow = new JButton(windowico);
            toolbar.add(newWindow); 
            
            
            
            
    //WINDOW SETTINGS;
            window.setName("MyVirtualDesktop No-Version");
            window.setSize(1245, 740);     
            window.setVisible(true);
            window.setResizable(false);
            window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            window.add(toolbar);
            window.setContentPane(desktop);
        }
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Non stai usando correttamente i LayoutManager.

    Se non diversamente specificato (e bisognerebbe sempre specificarlo) un JFrame possiede una istanza particolare di LayoutManager dettata da un componente chiamato JRootPane (che, sinceramente, non so esattamente come funzioni).

    Quello che desideri tu lo si può facilmente ottenere specificando che il ContentPane del JFrame deve essere gestito da un BorderLayout. Il JDesktopPane andrà nel suo CENTER, mentre la ToolBar nel suo SOUTH.

    In linea di massima, questo è l'approccio:

    codice:
    // Costruisco la finestra
    JFrame frame = new JFrame();
    
    // Imposto il LayoutManager (in questo caso un BorderLayout)
    frame.getContentPane().setLayout( new BorderLayout() );
    
    // Altre operazioni, come la costruzione dei componenti della finestra
    ...
    
    // Aggiungo i componenti alla finestra
    frame.getContentPane().add(mioDesktopPane, BorderLayout.CENTER);
    frame.getContentPane().add(miaToolBar, BorderLayout.SOUTH);
    Consiglio di approfondire per bene l'uso dei componenti Swing, dei LayoutManager e dei relativi metodi "add(Component, Constraint)".


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.