2012-08-26 69 views
1

我是Java新手,我需要您的幫助來實現GUI。以下是猜測遊戲代碼。有用。GUI - 更改JFrame的顏色

import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 
    import java.util.Random; 

    public class GuessGame extends JFrame { 
    private JTextField guessTextField; 
    private JLabel introLabel, guessLabel, clueLabel; 
    private JButton enterB, playAgainB; 

    private int randomNumber; 

    public GuessGame() { 
     super("Guessing Game!"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     //Creates components 
     enterB = new JButton("Guess"); 
     playAgainB = new JButton("Quit"); 
     introLabel = new JLabel("I have a number between 1 and 1000."); 
     guessLabel = new JLabel("Can you guess my number? Please enter your guess:"); 

     clueLabel = new JLabel(""); 
     // comment2 = new JLabel(" "); 
     guessTextField = new JTextField(5); 

     //content pane 
     Container c = getContentPane(); 
     setLayout(new FlowLayout()); 

     //adding component to the pane 
     c.add(introLabel); 
     c.add(guessLabel); 
     c.add(guessTextField); 
     //c.add(comment2); 
     c.add(enterB); 
     c.add(playAgainB); 
     c.add(clueLabel); 

     //enterB.setMnemonic('G'); 
     //playAgainB.setMnemonic('Q'); 

     setSize(350, 200); 
     setLocationRelativeTo(null); 
     setVisible(true); 
     //setResizable(false); 

     initializeNumber(); 

     //creating the handler 
     GuessButtonHandler ghandler = new GuessButtonHandler(); //instantiate new object 
     enterB.addActionListener(ghandler); // add event listener 

     QuitButtonHandler qhandler = new QuitButtonHandler(); 
     playAgainB.addActionListener(qhandler); 
    } 

    private void initializeNumber() { 
     randomNumber = new Random().nextInt(1000) + 1; 
     System.out.println(randomNumber); 
    } 

    class QuitButtonHandler implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      System.exit(0); 
     } 
    } 

    class GuessButtonHandler implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      int getUserInput; 
      int diff; 
      int Difference; 
      try { 
       getUserInput = Integer.parseInt(guessTextField.getText().trim());  

       if (getUserInput == randomNumber) { 
        clueLabel.setText("        Correct!"); 
       } 
       if (getUserInput > randomNumber) { 
       clueLabel.setText("       Too High"); 
       } else { 
       clueLabel.setText("       Too Low"); 
       } 


      } 
      catch (NumberFormatException e1) { 
       clueLabel.setText("Enter a VALID number!"); 
      } 
     } 


    } 



    public static void main(String args[]) { 
     //instantiate gueesgame object 
     GuessGame app = new GuessGame(); 

    } 
    } 

但是,窗口的顏色應該變成紅色或藍色。請幫助我使用此代碼。我是Java新手,它的語法。我非常感謝你的幫助。謝謝!

回答

1

你可以使用:

current = Integer.parseInt(guessTextField.getText().trim()); 
if (!firstTime) { 
    if (getUserInput > previous) { 
     getContentPane().setBackground(Color.red); 
    } else { 
     getContentPane().setBackground(Color.blue); 
    } 
} 

其中firstTimeprevious是類的成員變量。

不要忘了分配previous如果getUserInput == randomNumber不是會見。

更新:

你設置的背景藍色兩次:

if (getUserInput < randomNumber) { 
    clueLabel.setText("Too Low"); 
    getContentPane().setBackground(Color.blue); <------ remove this extra call 
    previous = getUserInput; 
} 
+0

謝謝!我應該把這部分放在哪個部分?或者我應該做什麼循環? :) –

+0

這在你的'GuessButtonHandler' – Reimeus

+0

謝謝先生!我這樣做了(請參閱編輯),當我輸入12,而下一個輸入是13時,它仍然是藍色。如果輸入高於隨機數就會變成紅色。我的編輯出了什麼問題? :) –

1

A碼比千言萬語更.....

if (current_Input > previous) { 
    c.setBackground(Color.red); 
} else { 
    c.setBackground(Color.blue); 
} 
+0

謝謝,先生!你覺得如果有一個GuessButtonHandler點擊過,我可以聲明current_Input和previous? :) –