Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    213

    problema con BorderLayout

    Per fare esercizio sto realizzando il gioco dell'impiccato.Non riesco però a visualizzare in un BorderLayout i pulsanti che rappresentano le lettere che vanno cercate.Vi posto il codice:
    codice:
    import java.awt.*;
    import java.awt.event.*;
    
    import javax.swing.*; 
    
    public class Impiccato extends JFrame {
    	
    	String[] alfa={"a","b","c","d","e","f","g","h","i","l","m","n","o","p","q","r","s","t","u","v","z"};
    	JButton[] lettere=new JButton[21];
    	ImageIcon icona=new ImageIcon("c:/java/Hangman0.gif");
    	JLabel figure=new JLabel(icona);
    	JLabel prova=new JLabel("Impiccato");
    	JLabel prova1=new JLabel();
    	JLabel prova2=new JLabel();
    	
    	
    	public Impiccato(){
    		setSize(300,300);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		JPanel pane=new JPanel();
    		  pane.setLayout(new BorderLayout());
    		  pane.add("North",prova);
    		  pane.add("West",prova1);
    		  pane.add("East",prova2);
    		  pane.add("Center",figure);
    		  for(int i=0;i<21;i++){
    			  lettere[i]=new JButton(alfa[i]);
    		      pane.add("South",lettere[i]);
    		  }
    		  setContentPane(pane);
    		  setVisible(true);
    		  
    		 // for(int i=0;i<22;i++){
    		 // lettere[i].addActionListener(this);
    		 // }
    	}
    	
    	public static void main(String[] args){
    		  Impiccato im=new Impiccato();
    	  }
    	
    	/*public void actionPerformed(ActionEvent e){
    		if(e.getSource()==lettere){
    			prova1.setText("ciao");
    		}
    	}*/
    }
    Mi visualizza solo il pulsante con la lettera z.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Questo accade perchè ogni componente è situato nella stessa posizione del precedente.
    Cambia layout e li visualizzerai

    Faresti bene lanciare l'applicazione da un nuovo thread, come "richiesto" da Sun.

    codice:
    // codice..
    public static void makeGUI(){
      Impiccato im=new Impiccato();
      // Io qui setterei le dimensioni del frame
    }
    
    public static void main(String[] args) {
      try {
        SwingUtilities.invokeAndWait(new Runnable() {
          public void run() {
            makeGUI();
          }
        });
      }catch(Exception e) {}
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    prima di fare tutto ciò imposta a mano la grafica, poi gioca con i pannelli e i vari layout manager per raggiungere il tuo obiettivo. In questo caso specifico i bottoni li metterei all'interno di un pannello su cui ho impostato GridLayout, in modo che occupano tutti lo stesso spazio e risulti anche gradevole visivamente.

    In generale in un pannello raccogli componenti simili per logica, al loro interno imposta il layout manager che ti pare, e poi aggiungili al frame (molto più semplice).

    Il borderLayout, senza altri parametri, mette in primo piano l'ultimo componente inserito e nel tutorial oracle sulle swing questo è ben chiaro.

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.