Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    107

    Problema codice

    Ciao a tutti!!!!
    Ho un problema nel seguente codice: non riesco a visualizzare tutti i bottoni che inserisco nel JPanel center tramite le barre di scorrimento, perchèèè???? che sbaglio???


    codice:
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import javax.swing.BoxLayout;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JToggleButton;
    import javax.swing.border.EtchedBorder;
    
    public class Frame extends JFrame {
    	public JDialog dialog;
    	
    	Frame(){
    		
    		this.setBounds (30, 30, 1100, 750);
    		this.getContentPane().setLayout(new FlowLayout());
    		
    		dialog = new JDialog(this,"Ciao",false);
    		JPanel internal = new JPanel(new BorderLayout());
    		
    		JPanel center = new JPanel();
    		center.setLayout(new BoxLayout(center, BoxLayout.Y_AXIS));
    		center.setPreferredSize(new Dimension(300,50));
    		center.setBorder(new EtchedBorder(EtchedBorder.RAISED));
    		
    		JScrollPane scroll = new JScrollPane(center,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    		scroll.setPreferredSize(new Dimension(200,50));
    		
    		internal.add(scroll,BorderLayout.CENTER);
    		
    		center.add(new JToggleButton("ciao"));
    		center.add(new JToggleButton("ciao"));
    		center.add(new JToggleButton("ciao"));
    		center.add(new JToggleButton("ciao"));
    		center.add(new JToggleButton("ciao"));
    		center.add(new JToggleButton("ciao"));
    		center.validate();
    		
    		JPanel south = new JPanel(new FlowLayout());
    		south.add(new JToggleButton("ehi"));
    		south.add(new JToggleButton("ok"));
    		
    		internal.add(south,BorderLayout.SOUTH);
    		
    		dialog.add(internal);
    		dialog.pack();
    		dialog.setVisible(true);
    		this.setVisible(true);
    		
    	}
    	public static void main(String args[]){
    		Frame f = new Frame();
    	}
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Quando posti del codice, inseriscilo all'interno degli appositi tag [code] e [code], come suggerito nel regolamento, altrimenti risulta illeggibile.

    E i titoli... magari un po' più discorsivi.


    Ho modificato io il tuo post in questo senso.


    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

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

    Re: Problema codice

    Originariamente inviato da Azzurra85
    non riesco a visualizzare tutti i bottoni che inserisco nel JPanel center tramite le barre di scorrimento, perchèèè????
    Togli:
    center.setPreferredSize(new Dimension(300,50));

    E il perché è nella documentazione javadoc di JScrollPane:

    By default JScrollPane uses ScrollPaneLayout to handle the layout of its child Components. ScrollPaneLayout determines the size to make the viewport view in one of two ways:

    1. If the view implements Scrollable a combination of getPreferredScrollableViewportSize, getScrollableTracksViewportWidth and getScrollableTracksViewportHeightis used, otherwise
    2. getPreferredSize is used.

    Dal momento che JPanel (la "view" in questo caso) non implementa Scrollable, siamo nel secondo caso, ovvero viene usato getPreferredSize.
    Ma se tu imposti al JPanel un preferred size di 300,50 ..... ovvio che più di 300x50 non scrolla!!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    107
    Ma se io volessi visualizzare tutti i componenti inseriti nel JPanel tramite delle barre di scorrimento dovrei far implementare Scrollable al mio JPanel????

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Azzurra85
    Ma se io volessi visualizzare tutti i componenti inseriti nel JPanel tramite delle barre di scorrimento dovrei far implementare Scrollable al mio JPanel????
    No ... l'ho detto prima: ti basta non imporre un preferred size al JPanel .... insomma far mantenere il preferred size "giusto" che il BoxLayout si calcola in base al contenuto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    107
    Nel caso però io avessi un JScrollPane che è il contenitore di un JPanel che chiamo panel1 (layout manager BoXLayout verticale), al panel1 aggiungo altri JPanel (i JPanel aggiunti hanno un layout manager di tipo BoxLayout orizzontale) ai quali setto con setPreferredSize la dimensione e nei quali aggiungo al loro interno JLabel. Se io sforo la dimensione dei JPanel nei quali aggiungo i JLabel naturalmente non vedo tutto il contenuto dei JPanel.
    Per vederlo creo un JScrollPane per ogni JPanel con i JLabel all'interno e aggiungo i JScrollPane al panel1. Però quello che succede è che compaiono sempre le barre di scorrimento quando invece io ho impostato che devono apparire solo quando necessario ma effetto più grave è che quando sforo la dimensione dei jPanel non vedo più niente, finisce lo scrolling. Allora ti chiedo se i JPanel che contengono i JLabel implementano Scrollable riesco a risolvere il problema di scrolling???

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 © 2026 vBulletin Solutions, Inc. All rights reserved.