Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Info:Gioco del 15

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107

    Info:Gioco del 15

    Ciao a tutti devo creare il gioco del 15 per l'università e ho iniziato creando una finestra di benvenuto l'ho creata in 2 modi diversi :

    1) QUESTA VERSIONE PERMETTE DI SCRIVERE IL MESSAGGIO DI BENVENUTO AL CENTRO E DI METTERE I TASTI ENTRA ED ESCI IN FONDO
    import java.util.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.font.*;
    import java.awt.Color.*;
    import java.awt.Container.*;




    class Quindici extends JFrame implements ActionListener{


    public static void main(String[] args){
    Quindici frame=new Quindici();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
    frame.show();
    }


    public Quindici(){

    setTitle("Quindici");
    setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    Container contentPane=getContentPane();
    label=new JLabel("WELCOME TO THE GAME OF FIFTEEN!!!");
    label.setFont(new Font("Times New Roman", Font.BOLD, FONTSIZE));
    contentPane.add(label, BorderLayout.CENTER);
    JPanel buttonpanel =new JPanel();
    JButton EntraButton=new JButton("Entra");
    buttonpanel.add(EntraButton);
    JButton EsciButton=new JButton("Esci");
    EsciButton.addActionListener(this);
    buttonpanel.add(EsciButton);
    contentPane.add(buttonpanel, BorderLayout.SOUTH);

    }

    public static final int DEFAULT_WIDTH=600;
    public static final int DEFAULT_HEIGHT=600;
    private JLabel label;
    private static final int FONTSIZE=28;


    public void actionPerformed(ActionEvent e){
    if(e.getActionCommand().equals("Cancel"));
    System.exit(0);
    }}

    2)QUEST'ALTRA VERSIONE INVECE PERMETTE DI INSERIRE IL MESSAGGIO DI COLORE BLU AL CENTRO DELLA FINESTRA E DI IMPOSTARE IL COLORE DI SFONDO COME GIALLO E IL TASTO ENTRA E' IN ALTO

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.font.*;
    import java.awt.Color.*;
    import java.awt.Container.*;




    class QuindiciFrame extends JFrame{


    public static void main(String[] args){
    QuindiciFrame frame=new QuindiciFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
    frame.show();
    }
    public QuindiciFrame(){
    setTitle("Quindici");
    setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    Container contentPane=getContentPane();
    QuindiciPanel panel=new QuindiciPanel();
    contentPane.add(panel, BorderLayout.CENTER);


    }
    public static final int DEFAULT_WIDTH=800;
    public static final int DEFAULT_HEIGHT=600;


    class QuindiciPanel extends JPanel{
    public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.setColor(Color.BLUE);
    g.drawString("WELCOME TO THE GAME OF FIFTEEN!!!!!", MESSAGE_X, MESSAGE_Y);
    Font f = new Font("Times New Roman",Font.BOLD,30);
    setFont(f);

    }
    public static final int MESSAGE_X= 100;
    public static final int MESSAGE_Y= 150;
    public QuindiciPanel(){
    makeButton("Entra", "javax.swing.Quindici.Entra.EntraLookAndFeel") ;

    }

    void makeButton(String name, final String QuidiciEntra){
    JButton ENTRAButton= new JButton("ENTRA");
    add(ENTRAButton);
    setBackground(Color.yellow);




    }



    }

    }

    Il mio problema è questo: vorrei a partire dal primo modo impostare il colore dello sfondo giallo e quello del testo blu ma non so come fare.

    Inoltre vorrei collegare al bottone entra un'altra finestra.

    Potete aiutarmi??

    Grazie

    Marshall

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Il mio problema è questo: vorrei a partire dal primo modo impostare il colore dello sfondo giallo e quello del testo blu ma non so come fare.
    Aggiungi le liee in grassetto. In generale per cambiare il colore di sfondo di un qualsiasi JComponent si usa setBackground(Color c), per cambiare il colore degli elementi in primo piano (come le scritte) si usa setForeground(Color c).
    codice:
    Container contentPane=getContentPane();
    contentPane.setBackground(Color.YELLOW);
    label=new JLabel("WELCOME TO THE GAME OF FIFTEEN!!!");
    label.setFont(new Font("Times New Roman", Font.BOLD, FONTSIZE));
    label.setForeground(Color.BLUE);
    Inoltre vorrei collegare al bottone entra un'altra finestra.
    Intendi che al click del bottone si apra un altra finestra?
    Assegni la classe come ActionListener per il bottone, nel actionPerformed controlli se il bottone premuto e' entra e in quel caso apri un nuovo JFrame. Pero' forse e' meglio se invece che fare un nuovo JFrame, tu faccia un nuovo JPanel personalizzato. Poi lometti come contentPane del Frame che stai gia' usando,

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    Originariamente inviato da simo7784
    Intendi che al click del bottone si apra un altra finestra?
    Assegni la classe come ActionListener per il bottone, nel actionPerformed controlli se il bottone premuto e' entra e in quel caso apri un nuovo JFrame. Pero' forse e' meglio se invece che fare un nuovo JFrame, tu faccia un nuovo JPanel personalizzato. Poi lometti come contentPane del Frame che stai gia' usando,
    Ciao grazie per i consigli quei cambiamenti per il background e foreground li avevo provati ma non funzionavano ora però si, forse avevo fatto qualche errore sintattico... cmq ora il problema è questo volevo che al cliccare del tasto entra si aprisse nella stessa finestra però un'altra pannello, cioè volevo che nella finestra all'inizio ci fosse il messaggio come c'è ora e poi al premere di entra nella stessa finestra venisse mostrato quest'altra funzione:

    class LogLayoutFrame extends JFrame{

    public LogLayoutFrame(){
    setTitle("Login");
    setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

    JLabel label1=new JLabel("Username:");
    JTextField textField1= new JTextField(15);
    textField1.setMaximumSize(textField1.getPreferredS ize());
    Box hbox1=Box.createHorizontalBox();
    hbox1.add(label1);
    hbox1.add(Box.createHorizontalStrut(10));
    hbox1.add(textField1);

    JLabel label2=new JLabel("Password:");
    JTextField textField2= new JTextField(15);
    textField2.setMaximumSize(textField2.getPreferredS ize());
    Box hbox2=Box.createHorizontalBox();
    hbox2.add(label2);
    hbox2.add(Box.createHorizontalStrut(10));
    hbox2.add(textField2);
    JButton button1=new JButton("ok");
    JButton button2=new JButton("cancel");
    Box hbox3=Box.createHorizontalBox();
    hbox3.add(button1);
    hbox3.add(Box.createGlue());
    hbox3.add(button2);
    Box vbox=Box.createVerticalBox();
    vbox.add(hbox1);
    vbox.add(hbox2);
    vbox.add(Box.createGlue());
    vbox.add(hbox3);
    Container contentPane=getContentPane();
    contentPane.add(vbox,BorderLayout.CENTER);
    }
    public static final int DEFAULT_WIDTH=200;
    public static final int DEFAULT_HEIGHT=200;

    public void actionPerformed(ActionEvent e){
    if(e.getActionCommand().equals("cancel"));
    System.exit(0);
    }
    }


    che permette il login.

    Come posso fare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Prima di tutto non fai un frame, ma fai un JPanel con questa funzione. Nel ActionPerformed controlli qual'e' stato il bottone premuto e se e' quello giusto istanzi un oggetto di questo tipo, rimuovi il vecchio pannello dalla parte centrale del contentPane e ci metti questo nuovo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    Originariamente inviato da simo7784
    Prima di tutto non fai un frame, ma fai un JPanel con questa funzione. Nel ActionPerformed controlli qual'e' stato il bottone premuto e se e' quello giusto istanzi un oggetto di questo tipo, rimuovi il vecchio pannello dalla parte centrale del contentPane e ci metti questo nuovo.
    Puoi scrivermi il codice non riesco a farlo.. grazie per i consigli

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    [quote]Puoi scrivermi il codice non riesco a farlo..[quote]
    Ti faccio un esempio,poi tu lo adatti. E' piu' costruttivo per te.
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class MyFrame extends JFrame implements ActionListener {
       private JButton b;
       private JPanel centerPanel;
       
       public MyFrame() {
          super("Prova");
          
          b = new JButton("Click");
          b.addActionListener(this);
          centerPanel= new JPanel();
          centerPanel.setBackground(Color.red);
          
          this.getContentPane().add(centerPanel, BorderLayout.CENTER);
          JPanel bottoni = new JPanel();
          bottoni.add(b);
          this.getContentPane().add(bottoni, BorderLayout.SOUTH);
          
          this.setSize(300,300);
          this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
          this.setVisible(true);
       }
       
       public void actionPerformed(ActionEvent e) {
           if(e.getSource().equals(b)) {
               this.getContentPane().remove(centerPanel);
               centerPanel = new JPanel();
               centerPanel.setBackground(Color.GREEN);
               this.add(centerPanel, BorderLayout.CENTER);
               //Importante mettere validate() per far vedere le modifiche
               this.validate();
           }
       }
       
       public static void main(String[] args) {
           new MyFrame();
       }
    }
    Naturalmente tu non istanzi un JPanel, ma un LoadingPanel scritto da te. Dimenticavo, in questo modo rimangono i bottoni, se vuoi eliminare tutto, puoi fare
    codice:
       public void actionPerformed(ActionEvent e) {
           if(e.getSource().equals(b)) {
               centerPanel = new JPanel();
               centerPanel.setBackground(Color.GREEN);
               this.setContentPane(centerPanel);
               //Importante mettere validate() per far vedere le modifiche
               this.validate();
           }
       }

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    ciao grazie mille per gli aiuti che mi stai dando,vedi io sto imparando praticamente da autodidatta perchè all'università la prof. ha dimenticato di spiegarci l'awt!! che è fondamentale per il progetto che devo fare.

    Grazie hai tuoi aiuti sono riuscito a fare quello che volevo ma ora ho degli altri problemi che sono:

    1) nella finestra all'inizio appare il messaggio di benvenuto che però appare anche dopo aver premuto il tasto entra;

    2) nella finestra di login vorrei ripetere di nuovo la cosa fatta per la finestra di benvenuto a quella di login per mettere un barprogress che ho;

    3)vorrei fare in modo che i tasti esci di ogni finestra abbiano la funzione di chiudere appunto la finestra ma non so dove mettere il system.exit(0);

    SONO ARRIVATO A QUESTO PUNTO:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.font.*;
    import java.awt.Color.*;
    import java.awt.Container.*;




    class GIOCODEL15 extends JFrame implements ActionListener{

    private JButton a;
    private JButton b;
    private JPanel panel;


    public GIOCODEL15(){
    super("IL GIOCO DEL 15");

    a=new JButton("Entra");
    a.addActionListener(this);
    b=new JButton("Esci");
    b.addActionListener(this);
    panel=new JPanel();
    panel.setBackground(Color.yellow);
    this.getContentPane().add(panel, BorderLayout.CENTER);

    JPanel bottoni=new JPanel();
    bottoni.add(a);
    bottoni.add(b);
    Container contentPane=getContentPane();
    contentPane.setBackground(Color.YELLOW);
    JLabel label=new JLabel("WELCOME TO THE GAME OF FIFTEEN!!!");
    label.setFont(new Font("Times New Roman", Font.BOLD, FONTSIZE));
    label.setForeground(Color.BLUE);
    contentPane.add(label, BorderLayout.CENTER);

    this.getContentPane().add(bottoni,BorderLayout.SOU TH);
    this.setSize(330,335);
    this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CL OSE);
    this.setVisible(true);

    }
    private static final int FONTSIZE=15;

    public void actionPerformed(ActionEvent e){
    if(e.getSource().equals(a)){
    this.getContentPane().remove(panel);
    panel=new JPanel();
    panel.setBackground(Color.YELLOW);
    this.add(panel,BorderLayout.CENTER);

    JLabel label1=new JLabel("Username:");
    JTextField textField1= new JTextField(15);
    textField1.setMaximumSize(textField1.getPreferredS ize());
    Box hbox1=Box.createHorizontalBox();
    hbox1.add(label1);
    hbox1.add(Box.createHorizontalStrut(10));
    hbox1.add(textField1);
    JLabel label2=new JLabel("Password:");
    JTextField textField2= new JTextField(15);
    textField2.setMaximumSize(textField2.getPreferredS ize());
    Box hbox2=Box.createHorizontalBox();
    hbox2.add(label2);
    hbox2.add(Box.createHorizontalStrut(10));
    hbox2.add(textField2);
    Box hbox3=Box.createHorizontalBox();
    hbox3.add(Box.createGlue());
    Box vbox=Box.createVerticalBox();
    vbox.add(hbox1);
    vbox.add(hbox2);
    vbox.add(Box.createGlue());
    vbox.add(hbox3);
    Container contentPane=getContentPane();
    contentPane.add(vbox,BorderLayout.CENTER);
    this.validate();
    }
    }
    public static void main (String[] args){
    new GIOCODEL15();
    }

    }


    class GIOCODEL15Panel extends JPanel{
    public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.setColor(Color.BLUE);
    g.drawString("WELCOME TO THE GAME OF FIFTEEN!!!!!", MESSAGE_X, MESSAGE_Y);
    Font f = new Font("Times New Roman",Font.BOLD,30);
    setFont(f);

    }
    public static final int MESSAGE_X= 100;
    public static final int MESSAGE_Y= 150;
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    1) Perche' tu la label la metti nel contentPane, non nel pannello che rimuovi alla pressione del tasto.
    codice:
    JPanel bottoni=new JPanel();
    bottoni.add(a);
    bottoni.add(b);
    Container contentPane=getContentPane();
    contentPane.setBackground(Color.YELLOW);
    JLabel label=new JLabel("WELCOME TO THE GAME OF FIFTEEN!!!");
    label.setFont(new Font("Times New Roman", Font.BOLD, FONTSIZE));
    label.setForeground(Color.BLUE);
    panel.add(label);
    contentPane.add(panel, BorderLayout.CENTER);
    2) Non ho capito.
    3) Nell'actionPerformed
    codice:
    public void actionPerformed(ActionEvent e){
            if(e.getSource().equals(b)){
                     this.dispose();
            } else if(e.getSource().equals(a)){

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.