Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    mantenere proporzioni su JFrame

    salve a tutti, sono nuovo su questo forum. Mi sono iscritto perchè leggendolo spesso l'ho trovato molto utile, quindi spero lo sia ulteriormente e spero che anche io possa essere di aiuto a qualcuno.
    venerndo al dunque, sto creando una classe che mi gestisce una finestra.
    In questa finestra creo due Jpanel con delle loro dimensioni. Ora però, quando ingrandisco la finestra, le dimensioni dei JPanle rimangono uguali ma non proporzionati.
    spero di essermi spiegato... quindi speravo che qualcuno mi dia una mano.
    questo per sicurezza è il codice:
    codice:
    public class Client_AdminGUI extends JFrame{
    	
    	private final JPanel panelSx;
    	private final JPanel panelDx;
    	private final JButton start;
    	private final JButton refresh;
    	private final JList listaclient;
    	
    	public Client_AdminGUI() {
    		
    		this.setTitle("Client_Administrator");
    		this.setResizable(false);
    		this.setSize(500, 600);
    		this.setLocation(2, 0);
    
    		final Container pane=this.getContentPane();
    		pane.setBackground(Color.BLACK);
    		pane.setLayout(new BorderLayout(9,18));
    		
    		//panelSx=new JPanel();
    		panelSx=new JPanel(new GridLayout(1,1));
    		//panelSx.setLayout(new BorderLayout());
    		panelSx.setPreferredSize(new Dimension(250,300));
    		panelSx.setBackground(Color.yellow);
    		
    		//panelDx=new JPanel();
    		panelDx=new JPanel(new GridLayout(1,1));
    		panelDx.setPreferredSize(new Dimension(250,300));	
    		panelDx.setLayout(new BorderLayout());
    		panelDx.setBackground(Color.DARK_GRAY);
    		
    		start=new JButton("Start");
    		
    		refresh=new JButton("Refresh");
    		
    		listaclient=new JList();
    		listaclient.setPreferredSize(new Dimension(300,100));
    		//panelSx.add(listaclient);
    		
    		panelDx.add(start,BorderLayout.SOUTH);
    		panelDx.add(refresh,BorderLayout.PAGE_END);
    		pane.add(panelSx,BorderLayout.WEST);
    		pane.add(panelDx,BorderLayout.EAST);
    		
    		
    		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		this.setVisible(true);
    	}
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Sono diversi i problemi che devi affrontare parlando di resizing, il modo migliore(almeno per me) è definire le regole di layout (un layout manager), io parto sempre dal livello più interno (quindi il pannello che in genere rappresenta un'area che voglio si comporti in un determinato modo) risalendo via via verso l'esterno.
    Può andare bene che all'esterno metti il BorderLayout, ma attento a quando fai questo
    codice:
    panelDx=new JPanel(new GridLayout(1,1));
    		panelDx.setPreferredSize(new Dimension(250,300));	
    		panelDx.setLayout(new BorderLayout());
    		panelDx.setBackground(Color.DARK_GRAY);
    assegni 2 volte il layout.
    Prova a rivedere bene quello che fai, io ti consiglio l'uso del gridbaglayout, è un po' ostico da imparare, ma appena lo maneggi non c'è niente che risulti altrettanto valido

  3. #3
    grazie per la risposta.
    ti dico, sto in altissimo mare con la grafica.
    Vorrei fare una finestra con una scritta centrale che dice "benvenuto" e un pulsante sotto "avanti" ma non riesco neanche in questo.
    Qualcuno ha qualche dritta?
    grazie!

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Allora ti consiglio di seguire il tutorial della sun

    http://download.oracle.com/javase/tutorial/uiswing/

    è in inglese, ma è un'ottimo punto di inizio

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.